ฉันไม่สามารถรู้รหัสผ่านรูทของ MySQL ได้ ฉันจะทราบได้อย่างไร มีไฟล์ที่เก็บรหัสผ่านนี้หรือไม่?
ฉันกำลังติดตามลิงก์นี้แต่ฉันไม่มีไดเรกทอรี directadmin ในเครื่อง
ฉันไม่สามารถรู้รหัสผ่านรูทของ MySQL ได้ ฉันจะทราบได้อย่างไร มีไฟล์ที่เก็บรหัสผ่านนี้หรือไม่?
ฉันกำลังติดตามลิงก์นี้แต่ฉันไม่มีไดเรกทอรี directadmin ในเครื่อง
คำตอบ:
ขอบคุณ @thusharaK ฉันสามารถรีเซ็ตรหัสผ่านรูทได้โดยไม่ทราบรหัสผ่านเก่า
บน Ubuntu ฉันทำสิ่งต่อไปนี้:
sudo service mysql stop
sudo mysqld_safe --skip-grant-tables --skip-syslog --skip-networking
จากนั้นเรียกใช้ mysql ในเทอร์มินัลใหม่:
mysql -u root
และเรียกใช้แบบสอบถามต่อไปนี้เพื่อเปลี่ยนรหัสผ่าน:
UPDATE mysql.user SET authentication_string=PASSWORD('password') WHERE User='root';
FLUSH PRIVILEGES;
ใน MySQL 5.7 เขตข้อมูลรหัสผ่านในเขตข้อมูลตาราง mysql.user ถูกลบออกตอนนี้ชื่อเขตข้อมูลคือ 'authentication_string'
ออกจากเซฟโหมด mysql และเริ่มบริการ mysql โดย:
mysqladmin shutdown
sudo service mysql start
mysqladmin -u root -p shutdown
ด้วยรหัสผ่านใหม่
mysql -u root
ได้ มันแสดงข้อผิดพลาดAccess denied
คุณไม่สามารถดูรหัสผ่านที่แฮช สิ่งเดียวที่คุณทำได้คือรีเซ็ตมัน!
หยุด MySQL:
sudo service mysql stop
หรือ
$ sudo /usr/local/mysql/support-files/mysql.server stop
เริ่มในเซฟโหมด:
$ sudo mysqld_safe --skip-grant-tables
(เหนือบรรทัดคือคำสั่งทั้งหมด)
นี่จะเป็นคำสั่งต่อเนื่องจนกว่ากระบวนการจะเสร็จสิ้นดังนั้นให้เปิดหน้าต่างเชลล์ / เทอร์มินัลอื่นเข้าสู่ระบบโดยไม่ต้องใช้รหัสผ่าน:
$ mysql -u root
mysql> UPDATE mysql.user SET Password=PASSWORD('password') WHERE User='root';
MySQL 5.7 ขึ้นไป:
mysql> use mysql;
mysql> update user set authentication_string=password('password') where user='root';
เริ่ม MySQL:
sudo mysql start
หรือ
sudo /usr/local/mysql/support-files/mysql.server start
รหัสผ่านใหม่ของคุณคือ 'รหัสผ่าน'
mysql_secure_installation
และรากก็ไม่ได้ให้ความร่วมมืออีกต่อไป การauthentication_string
ตั้งค่าทำอะไร
mysqladmin -u root -p shutdown
ใช้รหัสผ่านใหม่แล้วsudo service mysql start
MySQL 5.7 ขึ้นไปจะบันทึกรากในล็อกไฟล์ MySQL
โปรดลองสิ่งนี้:
sudo grep 'temporary password' /var/log/mysqld.log
/var/log/mysql/error.log
มีคำเตือนเกี่ยวกับรหัสผ่านรูทว่างเปล่า - ดังนั้นวันนี้ฉันจึงบันทึก :) :)
สิ่งหนึ่งที่ทำให้ฉันติดตั้ง mySQL ใหม่และสงสัยว่าทำไมฉันไม่สามารถรับรหัสผ่านเริ่มต้นเพื่อใช้งานได้และทำไมถึงแม้จะมีวิธีการรีเซ็ตที่ไม่ทำงาน ปรากฎว่าใน Ubuntu 18 เซิร์ฟเวอร์ mysql รุ่นล่าสุดไม่ได้ใช้การตรวจสอบรหัสผ่านสำหรับผู้ใช้รูทโดยปริยาย ดังนั้นนี่หมายความว่ามันไม่สำคัญว่าคุณจะตั้งค่าอะไรมันจะไม่ยอมให้คุณใช้ มันคาดว่าคุณจะเข้าสู่ระบบจากซ็อกเก็ตที่มีสิทธิ์ ดังนั้น
mysql -u root -p
จะไม่ทำงานเลยแม้ว่าคุณจะใช้รหัสผ่านที่ถูกต้อง !!! มันจะปฏิเสธการเข้าถึงไม่ว่าคุณจะใส่อะไรลงไป
แต่คุณต้องใช้
sudo mysql
ที่จะทำงานโดยไม่ต้องใช้รหัสผ่านใด ๆ จากนั้นเมื่อคุณต้องการพิมพ์
ALTER USER 'root'@'localhost' IDENTIFIED WITH mysql_native_password BY 'Password you want to use';
จากนั้นออกจากระบบและตอนนี้สิ่งที่เลือดจะยอมรับรหัสผ่านของคุณในที่สุด
คุณหามันไม่เจอ มันถูกเก็บไว้ในฐานข้อมูลซึ่งคุณต้องใช้รหัสผ่านรูทเพื่อเข้าถึงและแม้ว่าคุณจะได้รับการเข้าถึงอย่างใดก็ตามมันก็จะถูกแฮชด้วยแฮชแบบทางเดียว คุณสามารถรีเซ็ตได้: http://dev.mysql.com/doc/refman/5.0/en/resetting-permissions.html
ทำตามขั้นตอนเหล่านี้เพื่อรีเซ็ตรหัสผ่านในระบบ Windows
หยุดบริการ Mysql จากตัวจัดการงาน
สร้างไฟล์ข้อความและวางคำสั่งด้านล่าง
MySQL 5.7.5 และรุ่นก่อนหน้า:
SET PASSWORD FOR 'root'@'localhost' = PASSWORD('yournewpassword');
MySQL 5.7.6 และใหม่กว่า:
ALTER USER 'root'@'localhost' IDENTIFIED BY 'yournewpassword';
บันทึกเป็นและวางไว้ในmysql-init.txt
'C' drive
เปิดพร้อมท์คำสั่งและวางต่อไปนี้
C:\> mysqld --init-file=C:\\mysql-init.txt
mysqld --init-file=/root/m.txt
Centos7 ฉันเพิ่มดังกล่าวข้างต้นคำสั่งSET PASSWORD FOR 'root'@'localhost' = PASSWORD('yournewpassword');
เพื่อ/root/m.txt
ยกเว้นว่าตัวจัดการแพ็กเกจร้องขอให้คุณพิมพ์รหัสผ่านรูทระหว่างการติดตั้งรหัสผ่านรูทเริ่มต้นคือสตริงว่าง หากต้องการเชื่อมต่อกับเซิร์ฟเวอร์ที่ติดตั้งใหม่ให้พิมพ์:
shell> mysql -u root --password=
mysql>
ในการเปลี่ยนรหัสผ่านให้นำเปลือกยูนิกซ์กลับมาและพิมพ์:
shell> mysqladmin -u root --password= password root
รหัสผ่านใหม่คือ 'รูท' ตอนนี้เชื่อมต่อกับเซิร์ฟเวอร์:
shell> mysql -u root --password=
ERROR 1045 (28000): Access denied for user 'root'@'localhost' (using password: NO)
โอ๊ะรหัสผ่านมีการเปลี่ยนแปลง ใช้อันใหม่root
:
shell> mysql -u root --password=root
...
blah, blah, blah : mysql welcome banner
...
mysql>
บิงโก! ใหม่ทำสิ่งที่น่าสนใจ
mysql> show databases;
+--------------------+
| Database |
+--------------------+
| information_schema |
| mysql |
| performance_schema |
+--------------------+
3 rows in set (0.00 sec)
Maurycy
ที่นอกเหนือไปจากคำตอบอื่น ๆ ในการติดตั้ง cPanel, รหัสผ่าน root MySQL /root/.my.cnf
ถูกเก็บไว้ในไฟล์ชื่อ (และบริการ cpanel รีเซ็ตบริการอีกครั้งเมื่อมีการเปลี่ยนแปลงดังนั้นคำตอบอื่น ๆ ที่นี่จะไม่ช่วย)
คุณสามารถดูรหัสผ่าน root ของ mysql ได้ดีฉันได้ลองใช้กับ mysql 5.5 แล้วดังนั้นไม่ทราบว่าเวอร์ชั่นใหม่อื่น ๆ ใช้งานได้ดีหรือไม่
nano ~/.my.cnf
สิ่งนี้ใช้ได้กับฉัน:
บนเทอร์มินัลพิมพ์ต่อไปนี้
$ sudo mysql -u root -p
ป้อนรหัสผ่าน: // เพียงกด Enter
MySQL>
รหัสผ่านเริ่มต้นที่ใช้งานได้สำหรับฉันหลังจากติดตั้งเซิร์ฟเวอร์ mysql ทันทีคือ: mysql
ขั้นตอนการเปลี่ยนแปลงขึ้นอยู่กับรุ่นของ MySql ทำตามขั้นตอนตรงตามที่อธิบายไว้สำหรับรุ่นของคุณ:
HINTS - อ่านก่อนหน้าคำแนะนำสำหรับ MySql เวอร์ชันของคุณ *
ในขั้นตอนที่ 5: แทนที่จะเรียกใช้ CMD สร้างทางลัดบนเดสก์ท็อปของคุณเรียก CDM.exe จากนั้นคลิกขวาที่ทางลัดแล้วเลือก "ดำเนินการในฐานะผู้ดูแลระบบ"
ในขั้นตอนที่ 6: ข้ามเวอร์ชันแรกที่เสนอของคำสั่งและดำเนินการหนึ่งในสองคำสั่งที่มีพารามิเตอร์ --defaults-file
เมื่อคุณดำเนินการคำสั่งถ้าทุกอย่างเรียบร้อยหน้าต่าง CMD จะยังคงเปิดอยู่และคำสั่งของขั้นตอนที่ 6 ยังคงดำเนินการ เพียงปิดหน้าต่าง (คลิก 'x') จากนั้นบังคับให้ปิด MySQl จากตัวจัดการงาน
ลบไฟล์ด้วยคำสั่ง SQL และเริ่ม MySQL อีกครั้ง ต้องเปลี่ยนรหัสผ่านทันที
5.0 http://dev.mysql.com/doc/refman/5.0/th/resetting-permissions.html
5.1 http://dev.mysql.com/doc/refman/5.1/th/resetting-permissions.html
... เพียงแค่เปลี่ยนเวอร์ชั่นในลิงค์ (5.5, 5.6, 5.7)
ในไฟล์ ".namename" .err ของคุณภายในโฟลเดอร์ data MySQL ทำงานให้ลองค้นหาสตริงที่ขึ้นต้นด้วย:
"สร้างรหัสผ่านชั่วคราวสำหรับ roor @ localhost"
คุณสามารถใช้ได้
less /mysql/data/dir/hostname.err
จากนั้นคำสั่ง slash ตามด้วยสตริงที่คุณต้องการค้นหา
/"A temporary password"
จากนั้นกด n เพื่อไปยังผลลัพธ์ถัดไป
คำตอบที่ให้ไว้ที่นี่ดูเหมือนจะไม่เหมาะกับฉันเลยเคล็ดลับกลายเป็น: ALTER USER 'root' @ 'localhost' ที่ระบุด้วย mysql_native_password BY 'test';
(ตอบคำถามให้สมบูรณ์ที่นี่: https://www.percona.com/blog/2016/03/16/change-user-password-in-mysql-5-7-with-plugin-auth_socket/ )
ระบบ:
ขั้นตอน:
เปิดเชลล์สองเซสชันโดยล็อกอินเป็นหนึ่งในผู้ใช้รูท Linux และอีกหนึ่งเป็นผู้ใช้ที่ไม่ใช่รูทพร้อมการเข้าถึงmysql
คำสั่ง
ในรูทเซสชันของคุณให้หยุดผู้ฟัง mysqld ปกติและเริ่มฟังซึ่งข้ามการรับรองความถูกต้องของรหัสผ่าน ( หมายเหตุ: นี่เป็นความเสี่ยงด้านความปลอดภัยที่สำคัญเนื่องจากใครก็ตามที่เข้าถึงmysql
คำสั่งสามารถเข้าถึงฐานข้อมูลของคุณโดยไม่ต้องใช้รหัสผ่าน และ / หรือปิดใช้งานการเข้าถึงเชลล์ก่อนทำสิ่งนี้):
# systemctl stop mysqld
# /usr/sbin/mysqld --skip-grant-tables -u mysql &
ในเซสชั่น nonroot ของคุณเข้าสู่ mysql และตั้งรหัสผ่าน root ของ mysql:
$ mysql
mysql> flush privileges;
Query OK, 0 rows affected (0.00 sec)
mysql> SET PASSWORD FOR 'root'@'localhost' = PASSWORD('MyNewPass');
Query OK, 0 rows affected, 1 warning (0.01 sec)
mysql> quit;
ในรูทเซสชันของคุณให้ฆ่าอินสแตนซ์ที่ไม่มีรหัสผ่านของ mysqld และกู้คืนผู้ฟัง mysqld ปกติเพื่อให้บริการ:
# kill %1
# systemctl start mysqld
ในเซสชันที่ไม่ใช่รูทให้ทดสอบรหัสผ่านรูทใหม่ที่คุณกำหนดค่าไว้ด้านบน:
$ mysql -u root -p
Enter password:
Welcome to the MySQL monitor. Commands end with ; or \g.
...
mysql>
ฉันแก้ไขมันด้วยวิธีที่แตกต่างซึ่งอาจจะง่ายกว่าสำหรับบางคน
ฉันทำเช่นนี้เพราะฉันพยายามเริ่มต้นในเซฟโหมด แต่ไม่สามารถเชื่อมต่อกับข้อผิดพลาด: ข้อผิดพลาด 2002 (HY000): ไม่สามารถเชื่อมต่อกับเซิร์ฟเวอร์ MySQL ภายในผ่านซ็อกเก็ต '/var/run/mysqld/mysqld.sock' (2)
สิ่งที่ฉันทำคือการเชื่อมต่อตามปกติเป็น root:
$ sudo mysql -u root
จากนั้นฉันก็สร้างผู้ใช้ระดับสูงใหม่:
mysql> grant all privileges on *.* to 'myuser'@'%' identified by 'mypassword' with grant option;
mysql> quit
จากนั้นเข้าสู่ระบบเป็น myuser
$ mysql -u myuser -p -h localhost
การพยายามเปลี่ยนรหัสผ่านทำให้ฉันไม่มีข้อผิดพลาด แต่ไม่ได้ทำอะไรให้ฉันดังนั้นฉันจึงทิ้งและสร้างผู้ใช้รูทขึ้นมาใหม่
mysql> drop user 'root'@'localhost;
mysql> mysql> grant all privileges on *.* to 'root'@'localhost' identified by 'mypassword' with grant option;
ผู้ใช้รูทกำลังทำงานกับรหัสผ่านใหม่
ไปที่ phpMyAdmin> config.inc.php> $ cfg ['เซิร์ฟเวอร์'] [$ i] ['รหัสผ่าน'] = ''
phpmyadmin
ไม่มีอะไรในคำถามเกี่ยวกับการเป็น