ข้อผิดพลาด 1045 (28000): การเข้าถึงถูกปฏิเสธสำหรับผู้ใช้ 'root' @ 'localhost' (ใช้รหัสผ่าน: YES)


184

ฉันเป็นวิศวกรไฟฟ้าที่เล่นกับระบบไฟฟ้าเป็นหลักแทนที่จะเขียนโปรแกรม เมื่อเร็ว ๆ นี้ฉันได้ทำตามคู่มือเพื่อติดตั้งชุดซอฟต์แวร์บน Ubuntu ที่จริงฉันไม่มีความรู้mySQLเลย ฉันได้ทำการติดตั้งต่อไปนี้บน Ubuntu ของฉันแล้ว

sudo apt-get update
sudo apt-get install mysql-server-5.5
sudo apt-get install mysql-client-5.5
sudo apt-get install mysql-common
sudo apt-get install glade
sudo apt-get install ntp

จากนั้นฉันก็ทำ

me@ubuntu:~/Desktop/iPDC-v1.3.1/DBServer-1.1$ mysql -uroot -proot <"Db.sql"

ฉันลงเอยด้วยข้อความแสดงข้อผิดพลาดต่อไปนี้

ERROR 1045 (28000): Access denied for user 'root'@'localhost' (using password: YES)

ฉันจะแก้ไขและดำเนินการต่อได้อย่างไร


1
ดูเหมือนจะไม่เกี่ยวข้องกับการเขียนโปรแกรมอย่างเคร่งครัดสำหรับฉัน ฉันตั้งค่าสถานะเพื่อย้ายไปยัง SuperUser
Uli Köhler

ผู้เข้าชมในอนาคตอย่าลืมตรวจสอบสาเหตุหลายประการที่อธิบายไว้ที่นี่: dev.mysql.com/doc/refman/8.0/en/problems-connecting.html
aderchox

คำตอบ:


155

หมายเหตุ:สำหรับMySQL 5.7+โปรดดูคำตอบจาก @Lahiruสำหรับคำถามนี้ ที่มีข้อมูลที่เป็นปัจจุบันมากขึ้น

สำหรับ MySQL <5.7:

รหัสผ่าน root เริ่มต้นคือว่างเปล่า (เช่นที่ว่างเปล่าสตริง) rootไม่ได้ ดังนั้นคุณสามารถเข้าสู่ระบบในฐานะ:

mysql -u root

คุณควรเปลี่ยนรหัสผ่านรูทหลังการติดตั้ง

mysqladmin -u root password [newpassword]

ในกรณีส่วนใหญ่คุณควรตั้งค่าบัญชีผู้ใช้แต่ละบัญชีก่อนที่จะทำงานกับฐานข้อมูลอย่างกว้างขวาง


5
@FarticlePilter ธงระบุรหัสผ่านดังนั้นหลังจากที่คุณเปลี่ยนรหัสผ่านรากของคุณคุณจะทำเช่น-p ใช้การป้อนข้อมูลมาตรฐานในการดำเนินการไฟล์ SQL ที่เส้นทางที่ได้รับผ่านทางผู้ใช้ที่คุณให้ข้อมูลประจำตัว mysql -u root -p[newpassword]< [filename]
Mike Brant

27
ฉันพยายามบอกว่าเป็นแต่ฉันได้mysqladmin -u root password abc1234 mysqladmin: connect to server at 'localhost' failed error: 'Access denied for user 'root'@'localhost' (using password: NO)'ขอบคุณมาก!
การพนัน Sibbs

2
@ Kanagaroo ในคำถามนี้ OP ระบุว่าพวกเขาเพิ่งติดตั้ง MySQL เป็นครั้งแรกและพยายามเข้าถึงผ่านไคลเอนต์บรรทัดคำสั่ง MySQL นั่นฟังดูเหมือนเป็นการเข้าถึงฉันครั้งแรก
ไมค์แบรนต์

18
จริงๆแล้วสำหรับเซิร์ฟเวอร์ชุมชน mysql 5.7 รหัสผ่านรูทเริ่มต้นจะถูกสร้างแบบสุ่มเมื่อคุณติดตั้ง ตรวจสอบ /var/log/mysqld.log ของคุณเพื่อหาบรรทัดที่พูดถึง "รหัสผ่านชั่วคราว" ประหยัดเวลาหลายชั่วโมงในการเดินเล่น
Phil

1
@BraianMellor วิธีนี้จะช่วยแก้ปัญหาสำหรับ MySQL <5.7 ซึ่งรหัสผ่านรูทเริ่มต้น (หลังการติดตั้ง) ใน Ubuntu นั้นว่างเปล่า (ไม่มีรหัสผ่าน) ซึ่งในคำถามเดิมที่ผู้โพสต์พยายามใช้รูท / รูท คำถามไม่ได้เกี่ยวกับรหัสผ่านที่หายไปการเปลี่ยนรหัสผ่านหรือคล้ายกัน สำหรับ MySQL เวอร์ชั่นใหม่ ๆ คำตอบอื่น ๆ ที่ฉันอ้างถึงคือคำตอบที่ถูกต้องเนื่องจากผู้ใช้จะต้องดูในบันทึกข้อผิดพลาดเพื่อดูรหัสผ่านรูทที่สร้างขึ้นแบบสุ่ม
Mike Brant

114

ฉันสามารถแก้ไขปัญหานี้ได้ด้วยการดำเนินการคำสั่งนี้

sudo dpkg-reconfigure mysql-server-5.5

ซึ่งจะเปลี่ยนรหัสผ่านรูท


10
สิ่งที่ฉันต้องการ ... แต่ไม่ใช่ทุกคนที่มีเซิร์ฟเวอร์เวอร์ชัน 5.5 ใช้dpkg --get-selections | grep sqlเพื่อรับเวอร์ชันของคุณ
Balmipour

1
@Balmipour สิ่งที่ควรเป็นคำสั่งเทียบเท่าเพื่อตรวจสอบเวอร์ชัน sql ใน Rhel 6.x
PrathamN

1
@Divz สิ่งที่ควรเป็นคำสั่งในการกำหนดค่าเซิร์ฟเวอร์ mysql ใน Rhel / centos อีกครั้ง
PrathamN

@ PrathamN ฉันไม่เคยใช้สีแดงมี แต่ googling สำหรับ "รุ่นตรวจสอบหมวกสีแดงรุ่น" ให้คำสั่งเช่นนี้: yum list installedเพิ่ม| grep sqlเพื่อกรองเฉพาะแพคเกจ SQL
Balmipour

1
เมื่อผมใช้คำสั่งนี้ใน Mac OS X, sudo: dpkg-reconfigure: command not foundฉันได้รับข้อผิดพลาดนี้: ข้อเสนอแนะใด ๆ
mOna

90

คุณต้องรีเซ็ตรหัสผ่าน! ขั้นตอนสำหรับ mac osx (ผ่านการทดสอบและใช้งานได้) และ ubuntu

หยุดใช้ MySQL

sudo service mysql stop

หรือ

$ sudo /usr/local/mysql/support-files/mysql.server stop

เริ่มในเซฟโหมด:

$ sudo mysqld_safe --skip-grant-tables --skip-networking

(เหนือบรรทัดคือคำสั่งทั้งหมด)

นี่จะเป็นคำสั่งต่อเนื่องจนกว่ากระบวนการจะเสร็จสิ้นดังนั้นให้เปิดหน้าต่างเชลล์ / เทอร์มินัลอื่นเข้าสู่ระบบโดยไม่ต้องใช้รหัสผ่าน:

$ mysql -u root

mysql> UPDATE mysql.user SET Password=PASSWORD('password') WHERE User='root';

ตามความคิดเห็นของ @ IberoMedia สำหรับ MySQL รุ่นใหม่ฟิลด์จะถูกเรียกว่าauthentication_string:

mysql> UPDATE mysql.user SET authentication_string =PASSWORD('password') WHERE User='root';

เริ่ม MySQL โดยใช้:

sudo service mysql start

หรือ

sudo /usr/local/mysql/support-files/mysql.server start

รหัสผ่านใหม่ของคุณคือ 'รหัสผ่าน'


3
ได้โปรดไม่ใช่อย่างนั้น! @ คำตอบของ Divz ปลอดภัยกว่า การอ้างอิงเอกสารเกี่ยวกับ --skip-grant-tables: สิ่งนี้ช่วยให้ทุกคนสามารถเชื่อมต่อได้โดยไม่ต้องใช้รหัสผ่านและด้วยสิทธิ์ทั้งหมด [... ] เนื่องจากไม่ปลอดภัย [... ] ใช้--skip-grant-tablesร่วมกับ--skip-networkingเพื่อป้องกันไม่ให้ลูกค้าระยะไกลเชื่อมต่อ โอ้และอันนี้ก็ไม่ได้ผลสำหรับฉัน ทำไมฉันมาที่นี่: p
Balmipour

1
ถ้าคุณไปทางนั้นใช่ มันไม่ได้ผลสำหรับฉันและการทำตามคำตอบของ @ Divz ดูเหมือนจะง่ายกว่าสำหรับฉันแล้ว--สิ่งที่ฉันอยากจะแนะนำคือใช้dpkg --get-selections | grep mysql-server-เพื่อรับรุ่น MySQL ที่แน่นอนจากนั้นไปหา sudo dpkg-reconfigure mysql-server-5.x (แทนที่ 5 .x พร้อมกับรุ่นเซิร์ฟเวอร์ของคุณ btw) ฉันแสดงความคิดเห็นคำตอบของ @ Divz ด้วยความแม่นยำนี้ แต่มันถูกปกปิดโดยความคิดเห็น "ขอบคุณ" หลายประการ
Balmipour

4
อัปเดตชุดผู้ใช้ authentication_string = รหัสผ่าน ('1111') โดยที่ user = 'root';
Dejell

2
ใช้งานได้จริง ... โซลูชันอื่นยังคงให้ข้อผิดพลาดเดิมกับฉัน
eddy147

2
ตั้งแต่ MySQL 5.7.6 คอลัมน์รหัสผ่านถูกเปลี่ยนชื่อเป็น "authentication_string" ที่นี่คุณสามารถอ่านเพิ่มเติมเกี่ยวกับมันได้: bugs.mysql.com/bug.php?id=76655
IberoMedia

56

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

mysql -u root -p 

หลังจากนั้นมันจะขอให้คุณผ่านคำเช่นนี้

Enter password: 

จากนั้นฉันพิมพ์รหัสผ่านที่ฉันใช้ นั่นคือทั้งหมดที่


3
ตลกว่านี่ช่วยหลังจากการวิจัยมาหลายวัน
girish_vr

ดีใจที่ได้รู้ @girish_vr
XY-JOE

ทำงานให้ฉัน! รุ่น mysql-server ของฉันคือ: รุ่นเซิร์ฟเวอร์: 8.0.13 MySQL Community Server - GPL
kaspiotr

อันนี้ช่วยได้ซึ่งเป็นเรื่องที่โง่มาก ๆ ในด้าน MySQL ที่ฉันยังไม่เชื่อ
wscourge

39

ในการเริ่มต้นครั้งแรกของเซิร์ฟเวอร์ต่อไปนี้จะเกิดขึ้นเนื่องจากไดเรกทอรีข้อมูลของเซิร์ฟเวอร์ว่างเปล่า:

  • เซิร์ฟเวอร์เริ่มต้นแล้ว
  • ใบรับรอง SSL และไฟล์คีย์ถูกสร้างขึ้นในไดเรกทอรีข้อมูล
  • validate_password ปลั๊กอินถูกติดตั้งและเปิดใช้งาน
  • สร้างบัญชี superuser 'root' @ 'localhost' แล้ว รหัสผ่านสำหรับ superuser ถูกตั้งค่าและเก็บไว้ในไฟล์บันทึกข้อผิดพลาด

หากต้องการเปิดเผยให้ใช้คำสั่งต่อไปนี้:

shell> sudo grep 'temporary password' /var/log/mysqld.log

เปลี่ยนรหัสผ่านรูทโดยเร็วที่สุดโดยล็อกอินด้วยรหัสผ่านชั่วคราวที่สร้างขึ้นและตั้งรหัสผ่านที่กำหนดเองสำหรับบัญชี superuser:

shell> mysql -u root -p #Login to root user with some password

mysql> ALTER USER 'root'@'localhost' IDENTIFIED BY 'MyNewPass5!'; 

16
สิ่งนี้ดูมีแนวโน้ม แต่มันไม่ได้ผลสำหรับฉัน เมื่อฉันวิ่งsudo grep 'temporary password' /var/log/mysqld.logฉันจะได้รับ/var/log/mysqld.log: No such file or directory
Eric Hepperle - CodeSlayer2010

5
ลองsudo grep 'temporary password' /var/log/mysql/error.logดู @Lahiru ทางออกสำหรับฉัน
artemisian

17
ฉันลองใช้ sudo grep 'รหัสผ่านชั่วคราว' /var/log/mysql/error.log แต่กลับไม่ได้อะไรเลย
ผู้เรียน

2
ลองshell> sudo grep 'password' /var/log/mysql/error.logดู ทำงานให้ฉัน แต่ฉันได้รับ: root @ localhost ถูกสร้างขึ้นด้วยรหัสผ่านที่ว่างเปล่า! โปรดพิจารณาปิดตัวเลือก - เริ่มต้นที่ไม่ปลอดภัย รุ่น mysql ของฉันคือ: Ver 8.0.13 สำหรับ Linux บน x86_64 (MySQL Community Server - GPL)
kaspiotr

1
@EnginYilmaz ทำไมคุณถึงแนะนำคำสั่ง mysql เมื่อปัญหาคือว่า mysql ไม่สามารถเข้าถึงได้?
R-obert

34

หากปัญหายังคงมีอยู่พยายามบังคับให้เปลี่ยนบัตรผ่าน

/etc/init.d/mysql stop

mysqld_safe --skip-grant-tables &

mysql -u root

ตั้งค่ารหัสผ่านผู้ใช้รูท MySQL ใหม่

use mysql;
update user set password=PASSWORD("NEW-ROOT-PASSWORD") where User='root';
flush privileges;
quit;

หยุดเซิร์ฟเวอร์ MySQL:

/etc/init.d/mysql stop

เริ่มเซิร์ฟเวอร์ MySQL และทดสอบ:

mysql -u root -p

1
ขอบคุณ. ERROR 1045 (28000): Access denied for user 'root'@'localhost' (using password: NO)ทำให้เกิดภัยพิบัติเซิร์ฟเวอร์ของฉัน 'mysqld_safe' ก็ล้มเหลวเช่นกันจนกระทั่งฉันทำ 'killall mysqld' หลังจากขั้นตอนที่ 1 ของคุณ
มาร์กอส

ได้โปรดไม่ใช่อย่างนั้น! @ คำตอบของ Divz ปลอดภัยกว่า การอ้างถึงเอกสารเกี่ยวกับ --skip-grant-tables: สิ่งนี้ช่วยให้ทุกคนสามารถเชื่อมต่อโดยไม่มีรหัสผ่านและด้วยสิทธิ์ทั้งหมด [... ] เนื่องจากไม่ปลอดภัย [... ] ใช้--skip-grant-tablesร่วมกับ--skip-networkingเพื่อป้องกันไม่ให้ลูกค้าระยะไกลเชื่อมต่อ โอ้และอันนี้ก็ไม่ได้ผลสำหรับฉัน ทำไมฉันมาที่นี่: p
Balmipour

2
มันทำให้ฉัน: ข้อผิดพลาด 1054 (42S22): คอลัมน์ 'รหัสผ่าน' ที่ไม่รู้จักใน 'รายการฟิลด์'
MD Mohiuddin Ahmed

ตรวจสอบคำตอบโดย @Anshu เป็นวิธีที่ปลอดภัยกว่าในการจัดการสิ่งนี้
Mugoma J. Okomba

1
@ MD.MohiuddinAhmed คุณต้องใช้เซิร์ฟเวอร์ mysql รุ่นใหม่กว่า อ้างถึงคำตอบนี้: stackoverflow.com/a/31122246/6242649
Udayraj Deshmukh

32

มันเกิดขึ้นเมื่อรหัสผ่านของคุณหายไป

ขั้นตอนในการเปลี่ยนรหัสผ่านเมื่อคุณลืม:

  1. หยุดเซิร์ฟเวอร์ MySQL (บน Linux):

    sudo systemctl stop mysql
  2. เริ่มฐานข้อมูลโดยไม่โหลดตารางการให้สิทธิ์หรือเปิดใช้งานเครือข่าย:

    sudo mysqld_safe --skip-grant-tables --skip-networking &

    เครื่องหมายและท้ายคำสั่งนี้จะทำให้กระบวนการนี้ทำงานใน
    พื้นหลังเพื่อให้คุณสามารถใช้เทอร์มินัลของคุณและรัน #mysql -u root ได้จะไม่ขอรหัสผ่าน

    หากคุณได้รับข้อผิดพลาดดังนี้:

    2018-02-12T08: 57: 39.826071Z mysqld_safe Directory '/ var / run / mysqld' สำหรับ
    ไฟล์ซ็อกเก็ตUNIX ไม่มีอยู่ mysql -u root ERROR 2002 (HY000): ไม่สามารถเชื่อมต่อกับเซิร์ฟเวอร์ MySQL ภายในผ่านซ็อกเก็ต
    '/var/run/mysqld/mysqld.sock' (2) [1] + ออก 1

  3. ทำไดเรกทอรีบริการ MySQL

    sudo mkdir /var/run/mysqld

    ให้สิทธิ์ผู้ใช้ MySQL ในการเขียนไปยังไดเรกทอรีบริการ

    sudo chown mysql: /var/run/mysqld
  4. เรียกใช้คำสั่งเดียวกันในขั้นตอนที่ 2 เพื่อเรียกใช้ mysql ในพื้นหลัง

  5. เรียกใช้ mysql -u root คุณจะได้รับ mysql console โดยไม่ต้องใส่รหัสผ่าน

    เรียกใช้คำสั่งเหล่านี้

    FLUSH PRIVILEGES;

    สำหรับ MySQL 5.7.6 และใหม่กว่า

    ALTER USER 'root'@'localhost' IDENTIFIED BY 'new_password';

    สำหรับ MySQL 5.7.5 และรุ่นเก่ากว่า

    SET PASSWORD FOR 'root'@'localhost' = PASSWORD('new_password');

    หากคำสั่ง ALTER USER ไม่ทำงานให้ใช้:

    UPDATE mysql.user SET authentication_string = PASSWORD('new_password')     WHERE User = 'root' AND Host = 'localhost';

ตอนนี้ออกจาก

  1. เมื่อต้องการหยุดการเริ่มต้นอินสแตนซ์ด้วยตนเอง

    sudo kill `cat /var/run/mysqld/mysqld.pid`
  2. รีสตาร์ท mysql

    sudo systemctl start mysql

2
ในกรณีของฉันฉันต้องแก้ไขขั้นตอนที่ 6 เป็นsudo kill `sudo cat /var/run/mysqld/mysqld.pid`
kolunar

1
นี่คือสิ่งที่เหมาะกับฉัน ในขั้นตอนที่ 5 ทำ 1. ใช้ USER 2. ในการเปลี่ยนรหัสผ่านให้ใช้ -> อัปเดตชุดผู้ใช้ authentication_string = PASSWORD ("รหัสผ่าน") โดยที่ User = 'root';
Bikram

1
นี่เป็นทางออกที่ดีที่สุดที่ฉันสามารถหาได้ ใช้ "5.7.26 MySQL Community Server (GPL)" บน macOS Mojave ในรุ่น MBP '15 ฉันต้องหยุด Mysql จากการตั้งค่าระบบแล้วทำตามขั้นตอนที่ 2 และขั้นตอนที่ 5 และจากนั้นฉันก็ต้องฆ่ากระบวนการ MySQL ด้วยการค้นหา PID โดยใช้ ps -ef | grep mysql
cspider

12

ฉันเจอปัญหาที่น่ารำคาญมากและพบคำตอบมากมายที่ไม่ได้ผล ทางออกที่ดีที่สุดที่ฉันเจอคือถอนการติดตั้ง mysql อย่างสมบูรณ์และติดตั้งใหม่ ในการติดตั้งอีกครั้งคุณตั้งรหัสผ่านรูทและสิ่งนี้จะแก้ไขปัญหาได้


sudo apt-get purge mysql-server mysql-client mysql-common mysql-server-core-5.5 mysql-client-core-5.5
sudo rm -rf /etc/mysql /var/lib/mysql
sudo apt-get autoremove
sudo apt-get autoclean

ฉันพบรหัสนี้ที่อื่นดังนั้นฉันจึงไม่ขอเครดิต แต่มันได้ผล เมื่อต้องการติดตั้ง mysql หลังจากถอนการติดตั้งฉันคิดว่ามหาสมุทรดิจิทัลมีบทแนะนำที่ดี ชำระเงินส่วนสำคัญของฉันสำหรับสิ่งนี้
https://gist.github.com/JamesDaniel/c02ef210c17c1dec82fc973cac484096


12

กำลังใช้ Ubuntu-16.04: ติดตั้ง mysql - 5.7 ฉันมีปัญหาเดียวกัน: การเข้าสู่ระบบถูกปฏิเสธสำหรับผู้ใช้รูท

พยายามขั้นตอนด้านล่าง:

  1. dpkg --get-selections | grep mysql (เพื่อรับเวอร์ชันของ mysql)

  2. dpkg-reconfigure mysql-server-5.7

  3. mysql -u root -p

หากไม่มี -p คุณจะไม่ถามรหัสผ่าน เมื่อคุณอยู่ในคุณสามารถสร้างผู้ใช้ด้วยรหัสผ่านโดยทำตามขั้นตอน:

CREATE USER 'your_new_username'@'your-hostname' IDENTIFIED BY 'your-password';

GRANT ALL PRIVILEGES ON *.* to 'your_new_username'@'your-hostname' WITH GRANT OPTION;

ออกจากรูทและล็อกอินจากที่คุณระบุไว้ด้านบน

mysql -u <your_new_username> -p

ด้วยเหตุผลบางอย่างเพียงแค่พิมพ์ mysql ไม่ทำงาน ทั้งหมด mysql -u <name> -pผมขอแนะนำที่จะทำให้มันนิสัยในการใช้งาน



8

หากไม่มีคำตอบอื่นใดที่เหมาะกับคุณและคุณได้รับข้อผิดพลาดนี้:

mysqld_safe Logging to '/var/log/mysql/error.log'.
mysqld_safe Directory '/var/run/mysqld' for UNIX socket file don't exists.
[1]+  Exit 1                  sudo mysqld_safe --skip-grant-tables

ทำตามคำสั่งด้านล่างทีละขั้นตอนจนกว่าคุณจะรีเซ็ตรหัสผ่าน:

# Stop Your Server First
sudo service mysql stop

# Make MySQL service directory.
sudo mkdir /var/run/mysqld

# Give MySQL permission to work with the created directory
sudo chown mysql: /var/run/mysqld

# Start MySQL, without permission and network checking
sudo mysqld_safe --skip-grant-tables --skip-networking &

# Log in to your server without any password.
mysql -u root mysql


# Update the password for the root user:
UPDATE mysql.user SET authentication_string=PASSWORD('YourNewPasswordBuddy'), plugin='mysql_native_password' WHERE User='root' AND Host='localhost';

#if you omit (AND Host='localhost') section, it updates the root pass regardless of its host

FLUSH PRIVILEGES;
EXIT;

#kill mysqld_safe process
sudo service mysql restart

#Now you can use your new password to login to your Server
mysql -u root -p

#take note for remote access you should create a remote user and then grant all privileges to that remote user

นี่คือคำตอบที่ถูกต้องสำหรับ mysql 5.7 ใน Ubuntu 18.04 LTS เช่นกัน ขอบคุณ
Dhiraj

สำหรับที่อยู่ระยะไกลทั้งหมด: sudo vim /etc/mysql/mysql.conf.d/mysqld.cnf -> bind-address = 0.0.0.0
Mehdi

7

ฉันติดตั้ง MySQL ในฐานะผู้ใช้รูท ( $SUDO) และได้รับปัญหาเดียวกัน
นี่คือวิธีที่ฉันแก้ไข -

  1. $ sudo cat /etc/mysql/debian.cnf

นี้จะแสดงรายละเอียดเป็น -

# Automatically generated for Debian scripts. DO NOT TOUCH! [client] host = localhost user = debian-sys-maint password = GUx0RblkD3sPhHL5 socket = /var/run/mysqld/mysqld.sock [mysql_upgrade] host = localhost user = debian-sys-maint password = GUx0RblkD3sPhHL5 socket = /var/run/mysqld/mysqld.sock

ด้านบนเราสามารถเห็นรหัสผ่านเพียงแค่เราจะใช้(GUx0RblkD3sPhHL5)สิ่งนั้นในทันที -

  1. mysql -u debian-sys-maint -p Enter password:
    ตอนนี้ให้รหัสผ่าน ( GUx0RblkD3sPhHL5 )

  2. ตอนนี้exitจาก MySQL และเข้าสู่ระบบอีกครั้งเป็น -

    mysql -u root -p Enter password:
    ตอนนี้ให้รหัสผ่านใหม่ นั่นคือทั้งหมดที่เรามีรหัสผ่านใหม่สำหรับการใช้งานเพิ่มเติม

มันใช้งานได้สำหรับฉันหวังว่าจะช่วยคุณเช่นกัน!


6

โปรดอ่านเอกสารอย่างเป็นทางการ: Mysql: วิธีรีเซ็ตรหัสผ่านรูท

หากคุณมีสิทธิ์เข้าถึงเทอร์มินัล:

MySQL 5.7.6 และใหม่กว่า:

$ mysql
mysql> ALTER USER 'root'@'localhost' IDENTIFIED BY 'MyNewPass';

MySQL 5.7.5 และรุ่นก่อนหน้า:

$ mysql
mysql> SET PASSWORD FOR 'root'@'localhost' = PASSWORD('MyNewPass');

1
ให้: ข้อผิดพลาด 1131 (42000): คุณใช้ MySQL เป็นผู้ใช้นิรนามและผู้ใช้นิรนามไม่ได้รับอนุญาตให้เปลี่ยนรหัสผ่าน
MD Mohiuddin Ahmed

1
เป็นเรื่องปกติ ผู้ใช้ของคุณไม่ระบุชื่อ คุณต้องดำเนินการ> mysql -u {your_username}
d.danailov

3

ฉันใช้ mysql-5.7.12-osx10.11-x86_64.dmg ใน Mac OSX

กระบวนการติดตั้งจะตั้งรหัสผ่านชั่วคราวสำหรับผู้ใช้รูทโดยอัตโนมัติ คุณควรบันทึกรหัสผ่าน รหัสผ่านไม่สามารถกู้คืนได้

ทำตามคำแนะนำ

  1. ไปที่ cd /usr/local/mysql/bin/
  2. ป้อนรหัสผ่านชั่วคราว (ซึ่งจะดูเหมือน "tsO07JF1 => 3")
  3. คุณควรได้รับ mysql> prompt
  4. เรียกใช้SET PASSWORD FOR 'root'@'localhost' = PASSWORD('{YOUR_PASSWORD}');หากคุณต้องการตั้งรหัสผ่าน: "root" คำสั่งจะเป็นSET PASSWORD FOR 'root'@'localhost' = PASSWORD('root');
  5. วิ่ง ALTER USER 'root'@'localhost' PASSWORD EXPIRE NEVER;
  6. วิ่ง exit
  7. วิ่ง ./mysql -u root -p
  8. พิมพ์รหัสผ่านของคุณ ในกรณีของฉันฉันจะพิมพ์ "root" (โดยไม่ต้องพูด)
  9. นั่นคือทั้งหมดที่

เพื่อความสะดวกคุณควรเพิ่ม"/usr/local/mysql/bin"ใน PATH ของคุณ

ตอนนี้จากที่ใดก็ได้คุณสามารถพิมพ์./mysql -u root -pแล้วพิมพ์รหัสผ่านและคุณจะได้รับพรอมต์ mysql>

หวังว่ามันจะช่วย


3

คำตอบอาจฟังดูไร้สาระ แต่หลังจากเสียเวลาหลายชั่วโมงนี่คือวิธีที่ฉันได้ทำงาน

mysql -u root -p

ฉันได้รับข้อความแสดงข้อผิดพลาด

ERROR 1045 (28000): Access denied for user 'root'@'localhost' (using password: YES)

แม้ว่าฉันจะพิมพ์รหัสผ่านที่ถูกต้อง (รหัสผ่านชั่วคราวที่คุณได้รับเมื่อคุณติดตั้ง mysql ครั้งแรก)

ฉันเข้าใจถูกต้องเมื่อฉันพิมพ์รหัสผ่านเมื่อพรอมต์รหัสผ่านกะพริบ


2

หากปัญหายังคงมีอยู่พยายามบังคับให้เปลี่ยนบัตรผ่าน

หยุดเซิร์ฟเวอร์ MySQL (บน Linux):

/etc/init.d/mysql stop

หยุดเซิร์ฟเวอร์ MySQL (บน Mac OS X):

mysql.server stop

เริ่ม mysqld_safe daemon ด้วย --skip-grant-tables

mysqld_safe --skip-grant-tables &
mysql -u root

ตั้งค่ารหัสผ่านผู้ใช้รูท MySQL ใหม่

use mysql;
update user set password=PASSWORD("NEW-ROOT-PASSWORD") where User='root';
flush privileges;
quit;

หยุดเซิร์ฟเวอร์ MySQL (บน Linux):

/etc/init.d/mysql stop

หยุดเซิร์ฟเวอร์ MySQL (บน Mac OS X):

mysql.server stop

เริ่มบริการเซิร์ฟเวอร์ MySQL และทดสอบเพื่อเข้าสู่ระบบโดย root:

mysql -u root -p

1

โดยรหัสผ่านเริ่มต้นจะเป็นโมฆะดังนั้นคุณต้องเปลี่ยนรหัสผ่านโดยทำตามขั้นตอนด้านล่าง

เชื่อมต่อกับ mysql

root # mysql

ใช้ mysql

mysql> อัปเดตรหัสผ่านของผู้ใช้ตั้ง = PASSWORD ('root') โดยที่ User = 'root'; ในที่สุดโหลดสิทธิ์พิเศษ:

mysql> สิทธิ์ล้าง; mysql> ออกจาก



1

ใน Ubuntu 16.04 (MySQL เวอร์ชั่น 5.7.13) ฉันสามารถแก้ไขปัญหาด้วยขั้นตอนด้านล่าง:

  1. ทำตามคำแนะนำจากในส่วน B.5.3.2.2 การรีเซ็ตรหัสผ่านรูท: คู่มืออ้างอิง Unix และ Unix-Like Systems MySQL 5.7

  2. เมื่อฉันลอง #sudo mysqld_safe --init-file = / home / me / mysql-init & มันล้มเหลว ข้อผิดพลาดอยู่ใน /var/log/mysql/error.log

    2016-08-10T11: 41: 20.421946Z 0 [หมายเหตุ] การดำเนินการของ init_file '/ home / me / mysql / mysql-init' เริ่มขึ้น 2016-08-10T11: 41: 20.422070Z 0 [ข้อผิดพลาด] / usr / sbin / mysqld: ไฟล์ '/ home / me / mysql / mysql-init' ไม่พบ (Errcode: 13 - การอนุญาตที่ถูกปฏิเสธ) 2016-08-10T11: 41: 20.422096Z 0 [ข้อผิดพลาด] การยกเลิก

การอนุญาตให้ใช้ไฟล์ของ mysql-init ไม่ใช่ปัญหาต้องแก้ไขการอนุญาตของ apparmor

  1. แก้ไขโดย #sudo vi /etc/apparmor.d/usr.sbin.mysqld

    ....
      /var/log/mysql/ r,
      /var/log/mysql/** rw,
    
    
    # Allow user init file
      /home/pranab/mysql/* r,
    
      # Site-specific additions and overrides. See local/README for details.
      #include <local/usr.sbin.mysqld>
    }
  2. ทำ #sudo /etc/init.d/apparmor โหลดซ้ำ

  3. เริ่ม mysqld_safe อีกครั้งลองขั้นตอนที่ 2 ด้านบน ตรวจสอบ /var/log/mysql/error.log ตรวจสอบให้แน่ใจว่าไม่มีข้อผิดพลาดและ mysqld เริ่มต้นได้สำเร็จ

  4. รัน #mysql -u root -p

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

ป้อนรหัสผ่านที่คุณระบุใน mysql-init คุณควรจะสามารถเข้าสู่ระบบในฐานะ root ได้แล้ว

  1. ปิดระบบ mysqld_safe โดย #sudo mysqladmin -u root -p shutdown

  2. เริ่ม mysqld วิธีปกติโดย #sudo systemctl เริ่ม mysql


1

หากคุณมี MySQL เป็นส่วนหนึ่งของอิมเมจ Docker (พูดที่พอร์ต 6606) และการติดตั้ง Ubuntu (ที่พอร์ต 3306) ที่ระบุพอร์ตนั้นไม่เพียงพอ:

mysql -u root -p -P 6606

จะโยน:

ERROR 1045 (28000): Access denied for user 'root'@'localhost' (using password: YES)

เนื่องจากพยายามเชื่อมต่อ localhost โดยค่าเริ่มต้นการระบุ IP ในเครื่องของคุณจะช่วยแก้ไขปัญหา:

mysql -u root -p -P 6606 -h 127.0.0.1

0

ในรุ่น MySQL ที่ผ่านมาไม่มีpasswordในmysql.userตาราง

ALTER USERดังนั้นคุณจำเป็นต้องดำเนินการ วางคำสั่งหนึ่งบรรทัดนี้ลงในไฟล์

ALTER USER 'root'@'localhost' IDENTIFIED BY 'MyNewPass';

และรันเป็นไฟล์ init (ในฐานะผู้ใช้รูทหรือผู้ใช้ mysql)

mysqld_safe --init-file=/home/me/mysql-init &

MySQL mysqld_safeเซิร์ฟเวอร์จะต้องมีการหยุดที่จะเริ่มต้น

นอกจากนี้อาจมีปัญหากับการอนุญาตให้ใช้งาน apparmor เพื่อโหลดไฟล์ init นี้ อ่านเพิ่มเติมได้ที่นี่ https://blogs.oracle.com/jsmyth/entry/apparmor_and_mysql


0

หากคุณยังไม่ได้ตั้งรหัสผ่านให้เปิดใช้mysql -urootงานได้เลยสำหรับฉัน


0

บน Mac หากคุณมีปัญหาในการเข้าสู่ระบบด้วยรหัสผ่านแรกที่คุณได้รับในการติดตั้งบางทีคุณก็สามารถฆ่ากระบวนการ mysql แล้วลอง

ดังนั้น: 1 - รันคำสั่งต่อไปนี้เพื่อค้นหา PID ของ mysql:

ps -aef | grep mysql | grep -v grep

2- ฆ่ากระบวนการ:

kill -15 [process id] 

จากนั้นคุณสามารถเข้าสู่ระบบด้วยรหัสผ่านเริ่มต้นโดยใช้คำสั่งนี้:

mysql -uroot -p

ซึ่งขอให้คุณป้อนรหัสผ่านของคุณ เพียงป้อนรหัสผ่านเริ่มต้น


0

ฉันมีปัญหาที่คล้ายกัน:

ข้อผิดพลาด 1045 (28000): การเข้าถึงถูกปฏิเสธสำหรับผู้ใช้ 'root' @ 'localhost' (ใช้รหัสผ่าน: NO)

แต่ในกรณีของฉันสาเหตุมันช่างโง่จริงๆ ฉันคัดลอกคำสั่งจากเอกสาร Word และปัญหาคือยัติภังค์ไม่มีรหัส ASCII 2D แต่เป็น Unicode E28093

ทางที่ผิด:

mysql -u root pxxxx

วิธีการที่เหมาะสม:

mysql -u root -pxxxx

ทั้งคู่ดูเหมือนกัน แต่ไม่เหมือนกัน (ลองคัดลอกและวางแทนที่รหัสผ่านของคุณ)

ประสบกับข้อผิดพลาดประเภทนี้คำแนะนำคือลองพิมพ์คำสั่งแทนการคัดลอกและวาง


0

ฉันลองด้วยคำตอบที่ถูกต้องโดย @Lahiru แต่ไม่ได้ทำงานกับเซิร์ฟเวอร์ MySQL เวอร์ชั่น 8.0.16 (Community) บน macOS Mojave

ปฏิบัติตามคำแนะนำของ Sameer Choudhary ด้านบนและด้วยการปรับเปลี่ยนบางอย่างฉันสามารถเปลี่ยนรหัสผ่านรูทและเปิดใช้งานการเข้าถึงรูทจาก localhost

อัปเดต: ทั้งหมดนี้ไม่จำเป็นถ้าคุณติดตั้งบน Mac OS โดยใช้ homebrew: "ชงติดตั้ง mysql"


0

ฉันมีปัญหากับ Ubuntu 18.04 LTS และเซิร์ฟเวอร์ Mysql รุ่น 5.7.27-0ubuntu0.18.04.1 (Ubuntu)

ทางออกของฉันคือ (ทำงานเป็นrootด้วยsudo -i)

mysql <<-EOSQL
  use mysql;
  update user set plugin="mysql_native_password" where User='root';
  FLUSH PRIVILEGES ;
EOSQL

mysqladmin -u root password new_pw

0

ฉันเจอปัญหาเดียวกันสิ่งที่ฉันทำก็คือ

1) เปิด cmd ของคุณ

2) ไปที่ C: \ Program Files \ MySQL \ MySQL Server 8.0 \ bin> (ที่เซิร์ฟเวอร์ MySQL 8.0 อาจแตกต่างกันไปขึ้นอยู่กับเซิร์ฟเวอร์ที่คุณติดตั้ง)

3) จากนั้นใส่คำสั่งต่อไปนี้ mysql -u root -p

4) ฉันจะถามรหัสผ่าน ... เพียงกด Enter เพราะบางครั้งรหัสผ่านที่คุณป้อนขณะติดตั้งถูกเปลี่ยนเป็นว่างเปล่า

ตอนนี้คุณสามารถเข้าถึงฐานข้อมูลได้แล้ว

วิธีนี้ใช้ได้กับฉันบนแพลตฟอร์ม windows


0

ในขณะที่คำตอบยอดนิยม (w / mysqladmin) ทำงานบน mac 10.15 แต่ก็ไม่ได้ทำงานบน Ubuntu จากนั้นลองตัวเลือกอื่น ๆ มากมายรวมถึงการเริ่มต้นอย่างปลอดภัยสำหรับ MySQL ไม่มีการทำงานใด ๆ ดังนั้นการเพิ่มคำตอบใหม่

อย่างน้อยสำหรับรุ่นที่ฉันได้5.7.28-0ubuntu0.18.04.4รับคำตอบก็ขาดIDENTIFIED WITH mysql_native_passwordคำตอบที่กำลังขาดแคลน5.7.28 เป็นค่าเริ่มต้นใน LTS ปัจจุบันและควรเป็นค่าเริ่มต้นสำหรับระบบใหม่ส่วนใหญ่ (จนถึง 20.04 LTS จะออกมา)

พบว่า: https://www.digitalocean.com/community/questions/can-t-set-root-password-mysql-serverและตอนนี้ใช้

ALTER USER 'root'@'localhost' IDENTIFIED WITH mysql_native_password BY 'your_pass_here';

ซึ่งใช้งานได้


0

ข้อผิดพลาดที่ฉันต้องเผชิญคือ

ERROR 1045 (28000): Access denied for user 'root'@'localhost' (using password: NO)

มันเป็นปัญหากับพอร์ตที่ทำงานอยู่

โดยค่าเริ่มต้น mysql กำลังทำงานอยู่ port 3306ทำงานอยู่

คุณสามารถตรวจสอบได้โดยเปิด

  • ในระบบ 32 บิต:

    sudo /opt/lampp/manager-linux.run

  • ในระบบ 64 บิต:

    sudo /opt/lampp/manager-linux-x64.run

และคลิกที่configureปุ่ม

แผงควบคุม xampp

ในกรณีของฉันพอร์ตทำงานบน 3307 และคำสั่งที่ฉันใช้คือ

mysql -u root -p -P 3307 -h 127.0.0.1

0

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

mysql

ตรงข้ามกับ:

mysql -uroot -ppassword schemaname

อาจลองอ้างถึง:

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