ไม่สามารถรีเซ็ตรหัสผ่าน root ของ MySQL ได้ลองทุกอย่าง


9

ก่อนอื่นเราขออธิบายว่าฉันได้อ่านคำถามทั้งหมดจาก Ask Ubuntu เกี่ยวกับปัญหานี้แล้วและฉันได้ทำตามขั้นตอนทั้งหมดจากเอกสารอย่างเป็นทางการแล้ว:

help.ubuntu.com

dev.mysql.com

ฉันใช้ Ubuntu 16.04.1 LTS

ดังนั้นก่อนที่จะมีคนแนะนำอะไรที่ฉันอาจลองไปแล้วฉันจะแสดงสิ่งที่ฉันทำ:

root@localhost:/# sudo /etc/init.d/mysql stop
[ ok ] Stopping mysql (via systemctl): mysql.service.

MySQL หยุดอย่างถูกต้อง

root@localhost:/# sudo /usr/sbin/mysqld --skip-grant-tables --skip-networking &
[1] 3316
root@localhost:/#

ที่นี่ฉันไม่รู้ว่านี่ใช้งานได้หรือไม่ฉันเลยทำตามขั้นตอนต่อไป

root@localhost:/# mysql -u root
ERROR 2002 (HY000): Can't connect to local MySQL server through socket '/var/run/mysqld/mysqld.sock' (2)
root@localhost:/#

ดูเหมือนว่าจะไม่ทำงานเนื่องจากบริการไม่เริ่มทำงาน เนื่องจากฉันไม่สามารถทำตามขั้นตอนถัดไปได้ฉันจึงลองใช้วิธีอื่น (กำจัด)

หลังจากใช้:

sudo apt-get --purge remove
sudo apt-get install

ฉันลองขั้นตอนต่อไป:

root@localhost:/# mysqladmin -u root password MyNewPassword
mysqladmin: connect to server at 'localhost' failed
error: 'Access denied for user 'root'@'localhost' (using password: NO)'
root@localhost:/#

เช่นนี้ไม่ทำงานฉันได้ลองวิธีการอื่นที่กล่าวถึงใน mysql web:

ดังนั้นฉันจึงฆ่ากระบวนการ mysql ตามที่ชี้ไปที่นั่นจากนั้นฉันก็ใช้

root@localhost:/# mysqld_safe --init-file=/home/me/mysql-init &
[1] 5267
root@localhost:/# 2017-02-01T12:47:49.250083Z mysqld_safe Logging to syslog.
2017-02-01T12:47:49.252427Z mysqld_safe Logging to '/var/log/mysql/error.log'.

2017-02-01T12:47:49.254765Z mysqld_safe Logging to '/var/log/mysql/error.log'.

2017-02-01T12:47:49.257045Z mysqld_safe Directory '/var/run/mysqld' for UNIX socket file don't exists.

[1]+  Salida 1                mysqld_safe --init-file=/home/me/mysql-init
root@localhost:/#

ตอนนี้คือเมื่อฉันได้รับตัวเลือกดังนั้นฉันลองวิธีอื่นที่กล่าวถึงที่นี่ใน Ask Ubuntu:

root@localhost:/# sudo dpkg-reconfigure mysql-server-5.7
Checking if update is needed.
This installation of MySQL is already upgraded to 5.7.17, use --force if you still need to run mysql_upgrade
root@localhost:/#

และตอนนี้ฉันไม่มีตัวเลือกจริงๆดังนั้นยินดีต้อนรับข้อเสนอแนะ

คำตอบ:


16

ฉันมีปัญหาเดียวกันและฉันแก้ไขได้โดยดำเนินการบรรทัดนี้:

$ sudo mkdir /var/run/mysqld; sudo chown mysql /var/run/mysqld

ก่อนเรียกใช้งานบรรทัดนี้:

root@localhost:/# mysqld_safe --init-file=/home/me/mysql-init &

สำหรับฉันขั้นตอนเหล่านี้ทำงานได้ดีขึ้น

ฉันคิดว่ามีวิธีที่สะอาดกว่าในการทำสิ่งนี้ แต่สำหรับฉันมันเป็นวิธีการแก้ปัญหาที่รวดเร็วและมีประสิทธิภาพ


1
ขอบคุณที่ใช้กลอุบาย;)
464 Ilovelinux

มันเกิดขึ้นกับ mysql 5.7 เมื่อคุณหยุดบริการ mysql / var / run / mysqld จะถูกลบและได้รับการสร้างขึ้นใหม่เมื่อคุณเริ่มบริการอีกครั้ง
Capy

1

ฉันไม่สามารถติดตั้ง mysql ใหม่ได้ไม่ว่าฉันจะพยายามอะไรฉันก็ต้องลองและรีเซ็ตรหัสผ่าน

ฉันต้องไปเส้นทางนี้บน Ubuntu 16.04.1 LTS ฉันใช้เวลาหนึ่งชั่วโมงหรือมากกว่านั้นลองใช้คำแนะนำอื่น ๆ ทั้งหมดจากเว็บไซต์ MySql ไปจนถึงทุกอย่างที่เป็นเช่นเดียวกับ AskUbuntu Q & A ในที่สุดฉันก็ได้ทำงานด้วย:

หมายเหตุ:ในขณะที่มันแสดงรหัสผ่านสำหรับผู้ใช้รูทฉันก็ไม่มีรหัสผ่านเดิม เพียงป้อนรหัสผ่านเดียวกันที่จะใช้เป็นรหัสผ่านใหม่

หมายเหตุ:ไม่มี /var/log/mysqld.log เท่านั้น /var/log/mysql/error.log

นอกจากนี้โปรดทราบว่าสิ่งนี้ไม่ได้ผลสำหรับฉัน:
sudo dpkg-reconfigure mysql-server-5.7

ไม่เช่นนั้น
sudo dpkg-reconfigure --force mysql-server-5.5

สร้างไดเรกทอรีบริการ MySQL
sudo mkdir /var/run/mysqld

ให้สิทธิ์ผู้ใช้ MySQL ในการเขียนไปยังไดเรกทอรีบริการ
sudo chown mysql: /var/run/mysqld

แล้ว:

  1. ฆ่า mysqld pid ปัจจุบัน
  2. เรียกใช้ mysqld ด้วย sudo / usr / sbin / mysqld &
  3. run / usr / bin / mysql_secure_installation

    เอาต์พุตจาก mysql_secure_installation

    root @ myServer: ~ # / usr / bin / mysql_secure_installation

    การรักษาความปลอดภัยการปรับใช้เซิร์ฟเวอร์ MySQL

    ป้อนรหัสผ่านสำหรับรูทผู้ใช้:

    ปลั๊กอินรหัสผ่านที่ถูกต้องสามารถใช้เพื่อทดสอบรหัสผ่านและปรับปรุงความปลอดภัย มันตรวจสอบความแข็งแกร่งของรหัสผ่านและอนุญาตให้ผู้ใช้ตั้งรหัสผ่านเหล่านั้นเท่านั้นซึ่งมีความปลอดภัย คุณต้องการตั้งค่าปลั๊กอินรหัสผ่านที่ถูกต้องหรือไม่

    กด y | Y สำหรับใช่คีย์อื่น ๆ สำหรับไม่ใช่: ไม่ใช้รหัสผ่านที่มีอยู่สำหรับรูท เปลี่ยนรหัสผ่านสำหรับรูท? ((กด y | Y สำหรับใช่คีย์อื่น ๆ สำหรับไม่): y

    รหัสผ่านใหม่:

    ป้อนรหัสผ่านใหม่อีกครั้ง: ตามค่าเริ่มต้นการติดตั้ง MySQL มีผู้ใช้ที่ไม่ระบุชื่อทำให้ทุกคนสามารถเข้าสู่ระบบ MySQL ได้โดยไม่ต้องสร้างบัญชีผู้ใช้สำหรับพวกเขา สิ่งนี้มีไว้สำหรับการทดสอบเท่านั้นและเพื่อให้การติดตั้งราบรื่นขึ้น คุณควรลบออกก่อนที่จะย้ายเข้าสู่สภาพแวดล้อมการผลิต

    ลบผู้ใช้ที่ไม่ระบุชื่อหรือไม่ (กด y | Y สำหรับใช่คีย์อื่น ๆ สำหรับไม่): y สำเร็จ

    โดยปกติรูทควรได้รับอนุญาตให้เชื่อมต่อจาก 'localhost' เท่านั้น สิ่งนี้ทำให้มั่นใจได้ว่าใครบางคนไม่สามารถเดารหัสผ่านรูทได้จากเครือข่าย

    ไม่อนุญาตให้ล็อกอินรูทจากระยะไกล? (กด y | Y สำหรับใช่คีย์อื่น ๆ สำหรับไม่): y สำเร็จ

    โดยค่าเริ่มต้น MySQL มาพร้อมกับฐานข้อมูลชื่อ 'ทดสอบ' ที่ทุกคนสามารถเข้าถึงได้ สิ่งนี้มีไว้สำหรับการทดสอบเท่านั้นและควรลบออกก่อนย้ายเข้าสู่สภาพแวดล้อมการผลิต

    ลบฐานข้อมูลทดสอบและเข้าถึงหรือไม่ (กด y | Y สำหรับใช่คีย์อื่น ๆ สำหรับไม่): y

    • กำลังวางฐานข้อมูลทดสอบ ... สำเร็จ

    • กำลังลบสิทธิ์ในฐานข้อมูลทดสอบ ... สำเร็จ

    การโหลดตารางสิทธิ์จะทำให้มั่นใจได้ว่าการเปลี่ยนแปลงทั้งหมดที่ทำไปจะมีผลทันที

    โหลดตารางสิทธิ์เดี๋ยวนี้หรือไม่ (กด y | Y สำหรับใช่คีย์อื่น ๆ สำหรับไม่): y สำเร็จ

    ทุกอย่างเสร็จเรียบร้อย!


0

ฉันมีปัญหาเดียวกันและแก้ไขด้วย:

# /etc/init.d/mysql stop
# service mysql stop
# mkdir -p /var/run/mysqld
# chown mysql:mysql /var/run/mysqld
# mysqld_safe --skip-grant-tables &
# mysql -u root
mysql> use mysql;
mysql> update user set authentication_string=password('1234') where user='root';

(ที่นี่authentication_stringถือฟิลด์รหัสผ่าน)

โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.