MySQL Access ถูกปฏิเสธสำหรับผู้ใช้ 'root' @ 'localhost'


24

ในเซิร์ฟเวอร์ของฉันทุกครั้งที่ฉันพยายามเข้าถึง MySQL ฉันพบข้อผิดพลาด:

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

เมื่อฉันลองmysqladmin -u root -p passwordฉันจะได้รับ

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

ฉันจะเข้าถึง MySQL ในเซิร์ฟเวอร์ Ubuntu 12.04 ได้อย่างไร


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

ไวยากรณ์-p passwordไม่ถูกต้องจะต้องมี-ppasswordแต่ไม่แนะนำ ข้อมูลเพิ่มเติม: stackoverflow.com/questions/5131931/…
Melebius

ตรวจสอบหน้านี้เพื่อหาสาเหตุที่เป็นไปได้ของข้อผิดพลาดและวิธีแก้ไขปัญหาเพื่อแก้ไขข้อผิดพลาดนี้ rathishkumar.in/2017/04/... มันอาจช่วยคุณได้
rathishDBA

คำตอบ:


12

หากคุณกำลังใช้งาน localhost เพียงพิมพ์คำสั่งด้านล่างในเทอร์มินัล:

mysql -u root -p

หากคุณใช้เซิร์ฟเวอร์ภายนอกให้ป้อนโฮสต์ IP (xxx.xxx.xxx.xxx) เช่นกัน:

mysql -hxxx.xxx.xxx.xxx -uroot -p

คุณจะได้รับพร้อมท์ให้ใส่รหัสผ่านป้อนรหัสผ่านแล้วคุณจะสามารถเข้าถึงพรอมต์ MySQL ของคุณได้

คุณสามารถดูคำตอบนี้เกี่ยวกับวิธีการรีเซ็ตรหัสผ่าน MySQL ของคุณ


ผมได้ แต่ผมก็ยังไม่ทราบวิธีการเปลี่ยนหรือเลือกรหัสผ่าน
user253867

ในคำตอบที่ฉันลิงก์ไปคุณจะต้องแทนที่5.xตอนท้ายด้วยเวอร์ชั่นของเซิร์ฟเวอร์ MySQL ที่คุณใช้ ฉันใช้ 5.5 ดังนั้นคำสั่งของฉันจะเป็นsudo dpkg-reconfigure mysql-server-5.5
Parto

9
ดังนั้นปัญหาคือว่า OP Access denied for user 'root'@'localhost'เห็น mysql -u root -pขอแนะนำให้คุณเรียก Access denied for user 'root'@'localhost'ผลของคำสั่งนี้คือ:
phil294

5
sudo mysql -u root -pใช้งานได้สำหรับฉัน แต่ใช้mysql -u root -pไม่ได้
Ivan Black

7

ฉันได้รับอาการเหมือนกันเมื่อฉันอัปเดต แต่สำหรับฉันการแก้ไข (หลังจากฆ่า mysql และเริ่มต้นใหม่ด้วย --skip-grant-tables เพื่อเข้าไปข้างใน) คือการดำเนินการ

update mysql.user set plugin = '';

กระบวนการอัปเดตชอบตั้งค่าคอลัมน์นี้เป็น "unix_socket" ฉันไม่รู้ว่าควรจะทำอะไร แต่สำหรับฉันมันทำให้ทุกอย่างพังทลาย


วิธีนี้แก้ปัญหาของฉันใน Ubuntu 16 LTS หลังจากพยายามทุกอย่าง .. สิทธิ์ผู้ใช้กลุ่ม Thanx
onalbi

ใช่ฉันได้เรียกใช้สคริปต์การทำให้แข็งตัวและเปลี่ยนปลั๊กอินเป็นmysql_socketสิ่งที่ฉันตั้งไว้ให้ใช้PASSWORD('xxxxxx')ไม่ทำงาน
TheVillageIdiot

4

ตั้งรหัสผ่านสำหรับ mysql

sudo dpkg-reconfigure mysql-server-5.x

ตอนนี้เปิดเทอร์มินัลแล้วพิมพ์

mysql -uroot -p

ให้รหัสผ่านและกด Enter


4

ฉันแก้ไขปัญหาของฉันด้วยสิ่งนี้:

sudo apt-get remove --purge mysql-server mysql-client mysql-common
sudo apt-get autoremove
sudo apt-get autoclean
sudo apt install mysql-server

มีความรับผิดชอบอย่างยิ่ง ด้วยโซลูชันนี้คุณกำลังลบเซิร์ฟเวอร์ MySql และข้อมูลทั้งหมด


ใช้งานไม่ได้สำหรับฉัน
Ivan Black

!! มีความรับผิดชอบอย่างยิ่ง ด้วยวิธีนี้คุณจะลบเซิร์ฟเวอร์ MySql และข้อมูลทั้งหมด
Matiss Jurgelis

4

เหมือนกับ Ulrich Metzger หลังจากอัปเกรดเครื่องของฉันเป็น Ubuntu 16.04 และ Mysql-server-5.7 ฉันไม่สามารถลงชื่อเข้าใช้ด้วยรูทได้เนื่องจากpluginคอลัมน์เปลี่ยนไป

ปัญหาของฉันไม่ได้รับการแก้ไขด้วยsudo dpkg-reconfigure mysql-server-5.7+ ลบ + ลบล้าง + ทำความสะอาด

ฉันต้องหยุดให้บริการ mysql:

# sudo service mysql stop

จากนั้นรีสตาร์ท mysql daemon ด้วย--no-grant-tablesตัวเลือก:

# sudo mysqld_safe --no-grant-tables &

จากนั้นในเทอร์มินัลอื่นให้ป้อนคอนโซล mysql (ซึ่งตอนนี้ไม่ต้องการการรับรองความถูกต้อง) พร้อมคำสั่งmysqlและอัปเดตรหัสผ่านและคอลัมน์ปลั๊กอินผ่าน SQL UPDATE:

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

ในที่สุด, ฆ่าmysqld_safeคำสั่ง, เริ่มบริการ mysql และเชื่อมต่อกับ mysql ตามปกติ:

# sudo service mysql start
# mysql

2

หลังจากอัปเกรดจาก Ubuntu 14.4LTS เป็น 16.4LTS ผู้ใช้รูท mysql ไม่สามารถเข้าสู่ระบบได้อีกต่อไปเนื่องจากรายการผิดในคอลัมน์ปลั๊กอินของตารางผู้ใช้ mysql การอัพเกรดตั้งค่าปลั๊กอินสำหรับผู้ใช้ root @ localhost เป็นauth_socketแต่รายการที่ถูกต้องจะต้องเป็นmysql_native_passwordหากคุณใช้การเข้ารหัสด้วยรหัสผ่านดั้งเดิมของ mysql มาก่อน


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