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


116

ฉันเพิ่งเริ่มใช้ MySQL ฉันกำลังพยายามเรียกใช้ WordPress บนเดสก์ท็อป Windows และต้องการ MySQL

ฉันติดตั้งทุกอย่างWeb Platform Installerที่มีให้โดย Microsoft ฉันไม่เคยตั้งรหัสผ่านรูทสำหรับ MySQL และในขั้นตอนสุดท้ายของการติดตั้ง WordPress ระบบจะขอรหัสผ่านเซิร์ฟเวอร์ MySQL

รหัสผ่านเริ่มต้นสำหรับรูทคืออะไร (ถ้ามี) และจะเปลี่ยนได้อย่างไร

ฉันเหนื่อย:

mysql -u root password '123'

แต่มันแสดงให้ฉันเห็น:

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

หลังจากนี้ฉันลอง:

mysql -u root -p

อย่างไรก็ตามมันขอรหัสผ่านซึ่งฉันไม่มี


อัปเดต : ตามที่ Bozho แนะนำฉันทำสิ่งต่อไปนี้:

  1. ฉันหยุดบริการ MySQL จากบริการของ Windows
  2. เปิด CMD
  3. เปลี่ยนตำแหน่งเป็น c: \ program files \ mysql \ bin
  4. ดำเนินการคำสั่งด้านล่าง

    mysqld --defaults-file="C:\\program files\\mysql\\mysql server 5.1\\my.ini" --init-files=C:\\root.txt

  5. คำสั่งทำงานพร้อมคำเตือนเกี่ยวกับชุดอักขระที่ฉันกล่าวถึงด้านล่าง

  6. ฉันเริ่มบริการ MySQL จากบริการ Windows
  7. ฉันเขียนในบรรทัดคำสั่ง

    mysql -u root -p EnterPassword: 123 // 123 was the password

  8. บรรทัดคำสั่งแสดงข้อผิดพลาดต่อไปนี้

    Access denied for user 'root@localhost' (using password:**YES**)

ฉันจะแก้ปัญหานี้ได้อย่างไร ฉันกำลังรอที่จะได้ยินจากคุณ


1
คำสั่งแรกเป็นความผิดที่ควรจะเป็น-pหรือแต่ไม่--password passwordนั่นเป็นเหตุผลที่ mysql ตอบสนองด้วยการใช้รหัสผ่าน NO
Konerak

3
ดูเหมือนจะไม่มีใครให้คำตอบที่ชัดเจนแก่เขา รหัสผ่านสำหรับrootID ผู้ใช้ว่างเปล่าหลังจากการติดตั้งครั้งแรก ก็แค่ทำmysql -u root -pแล้วกด Enter นั่นคือปล่อยรหัสผ่านว่างไว้ จากนั้นใส่รหัสผ่านบนรหัสผู้rootใช้
RiggsFolly

1
@RiggsFolly ไม่ทำงาน! รหัสผ่านว่างทำให้ฉันถูกปฏิเสธการเข้าถึง!
J86

ฉันต้องการเพิ่มความคิดเห็นเนื่องจากฉันไม่แน่ใจว่าคำตอบที่ยอมรับนั้นเป็นคำตอบที่ถูกต้อง สำหรับฉันพิมพ์ mysql -u root -p จากนั้นเมื่อพร้อมท์สำหรับรหัสผ่านให้รหัสที่ถูกต้อง (ชุดที่ติดตั้ง) ใช้งานได้ แทนที่จะพิสูจน์ชื่อของ DB เป็น -p ด้วย DB ที่ฉันรู้ว่ามีอยู่ไม่ได้ผล
Carmine Tambascia

คำตอบ:


49

คุณสามารถตั้งค่ารหัสผ่านรากของคุณ โปรดทราบว่าไม่แนะนำให้ใช้รูทโดยไม่มีรหัสผ่าน


@Bozho - ฉันทำตามคำสั่งและสร้างไฟล์ข้อความและเรียกมันจากคำสั่งที่กล่าวถึงหลังจากนั้นฉันเผชิญกับ100608 [warning] --default-character-set is deprecated and will be removed in a future release. please use --character-set-server instead. ------------------------------------------ -------- และในที่สุดเมื่อฉันเริ่มบริการ mysql อีกครั้งฉันพบกับข้อผิดพลาดที่แน่นอน แต่คราวนี้(using password:yes)ฉันควรทำอย่างไร?
Nasser Hadjloo

@Bozo - โปรดทราบว่าฉันไม่สามารถเรียกใช้คำสั่งของคุณได้ด้วยmysqldt-ntฉันเรียกใช้โดยmysqldt -ntจริงๆแล้วคำสั่งแรกไม่เป็นที่รู้จักสำหรับ cmd ฉันกำลังรอที่จะได้ยินจากคุณ
Nasser Hadjloo

@Bozho - ฉันอัปเดตคำถามของฉันพร้อมข้อบกพร่อง ขอขอบคุณสำหรับเวลาของคุณ.
Nasser Hadjloo

@Bozho - มีวิธีอัปเดต / ปรับแต่งข้อผิดพลาด mysql ของฉันหรือไม่? ** อัปเดต "การเข้าถึงถูกปฏิเสธสำหรับผู้ใช้ 'root @ localhost' (โดยใช้รหัสผ่าน: NO)" เป็น "การเข้าถึงถูกปฏิเสธสำหรับผู้ใช้ 'myname @ localhost' (โดยใช้รหัสผ่าน: NO)" **
Hitesh

81

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

[root ~]# mysql -u root
ERROR 1045 (28000): Access denied for user 'root'@'localhost' (using password:NO)
  1. หยุดเซอร์วิส / daemon ของ mysql ที่รัน

    [root ~]# service mysql stop   
    mysql stop/waiting
  2. เริ่ม mysql โดยไม่มีสิทธิ์ใด ๆ โดยใช้ตัวเลือกต่อไปนี้ ตัวเลือกนี้ใช้เพื่อบู๊ตและไม่ใช้ระบบสิทธิพิเศษของ MySQL

    [root ~]# mysqld_safe --skip-grant-tables &

ในขณะนี้, terminal จะดูเหมือนจะหยุด ปล่อยให้เป็นเช่นนั้นและใช้เทอร์มินัลใหม่สำหรับขั้นตอนต่อไป

  1. ป้อนพรอมต์คำสั่ง mysql

    [root ~]# mysql -u root
    mysql> 
  2. แก้ไขการตั้งค่าสิทธิ์ของผู้ใช้รูท

    mysql> use mysql;
    Database changed
    mysql> select * from  user;
    Empty set (0.00 sec)
    mysql> truncate table user;
    Query OK, 0 rows affected (0.00 sec)
    mysql> flush privileges;
    Query OK, 0 rows affected (0.01 sec)
    mysql> grant all privileges on *.* to root@localhost identified by 'YourNewPassword' with grant option;
    Query OK, 0 rows affected (0.01 sec)

* หากคุณไม่ต้องการรหัสผ่านหรือรหัสผ่านที่ว่างเปล่า

    mysql> grant all privileges on *.* to root@localhost identified by '' with grant option;
    Query OK, 0 rows affected (0.01 sec)*
    mysql> flush privileges;
    Query OK, 0 rows affected (0.00 sec)

ยืนยันผลลัพธ์:

    mysql> select host, user from user;
+-----------+------+
| host      | user |
+-----------+------+
| localhost | root |
+-----------+------+
1 row in set (0.00 sec)
  1. ออกจากเชลล์และรีสตาร์ท mysql ในโหมดปกติ

    mysql> quit;
    [root ~]# kill -KILL [PID of mysqld_safe]
    [root ~]# kill -KILL [PID of mysqld]
    [root ~]# service mysql start
  2. ตอนนี้คุณสามารถเข้าสู่ระบบในฐานะผู้ใช้รูทได้สำเร็จด้วยรหัสผ่านที่คุณตั้งไว้

     [root ~]# mysql -u root -pYourNewPassword 
     mysql> 

2
กด Enter หลัง "[root ~] # mysqld_safe --skip-grant-tables &" และเปิดเทอร์มินัลอื่นเพื่อเข้าสู่ "[root ~] # mysql -u root"
Liuda

ฉันพบปัญหานี้และฉันก็ทำมากแค่ลืมรีสตาร์ทบริการ db ... ขอบคุณมาก!
Bruce Lee

3
ในขั้นตอนที่ 3 ฉันได้รับERROR 2002 (HY000): Can't connect to local MySQL server through socket '/var/run/mysqld/mysqld.sock' (2)
MrMartin

4
@MrMartin สร้างผบ. sudo mkdir -p /var/run/mysqldและให้สิทธิ์sudo chown mysql:mysql /var/run/mysqld
niceday

นี่คือคำตอบที่ช่วยฉันได้มาก!
Jones G

17

1) คุณสามารถตั้งรหัสผ่านรูทได้โดยเรียกใช้คอนโซล MySQL ตั้งอยู่ใน

C:\wamp\bin\mysql\mysql5.1.53\bin โดยค่าเริ่มต้น.

ไปที่ไดเร็กทอรีและพิมพ์ MySQL จากนั้นตั้งรหัสผ่านดังนี้ ..

    > SET PASSWORD FOR root@localhost = PASSWORD('new-password');

2) คุณสามารถกำหนดค่าแอปพลิเคชัน phpmyadmin ของ wamp สำหรับผู้ใช้รูทโดยการแก้ไข

C:\wamp\apps\phpmyadmin3.3.9\config.inc.php 

หมายเหตุ: -หากคุณใช้ xampp ไฟล์จะอยู่ที่

C:\xampp\phpMyadmin\config.inc.php

ดูเหมือนว่า:

        $cfg['Servers'][$i]['verbose'] = 'localhost';
        $cfg['Servers'][$i]['host'] = 'localhost';
        $cfg['Servers'][$i]['port'] = '';
        $cfg['Servers'][$i]['socket'] = '';
        $cfg['Servers'][$i]['connect_type'] = 'tcp';
        $cfg['Servers'][$i]['extension'] = 'mysqli';
        $cfg['Servers'][$i]['auth_type'] = 'config';
        $cfg['Servers'][$i]['user'] = 'root';
        $cfg['Servers'][$i]['password'] = 'YOURPASSWORD';
        $cfg['Servers'][$i]['AllowNoPassword'] = false;

ข้อผิดพลาด "การเข้าถึงถูกปฏิเสธสำหรับผู้ใช้ 'ราก @ localhost' (โดยใช้รหัสผ่าน: NO)" จะได้รับการแก้ไขเมื่อคุณตั้งค่า$cfg['Servers'][$i]['AllowNoPassword']การ เท็จ

หากคุณเปลี่ยนรหัสผ่านสำหรับ 'root @ localhost' เป็นการส่วนตัวคุณต้องทำ 2 สิ่งเพื่อแก้ไขข้อผิดพลาด "Access denided for user 'root @ localhost'":

  1. หาก ['รหัสผ่าน'] มีเครื่องหมายคำพูดว่างเช่น''ให้ใส่รหัสผ่านระหว่างเครื่องหมายคำพูด
  2. เปลี่ยน (โดยใช้รหัสผ่าน: NO) เป็น (โดยใช้รหัสผ่าน: ใช่)

วิธีนี้จะแก้ไขข้อผิดพลาด

หมายเหตุ: phpmyadmin เป็นเครื่องมือแยกต่างหากที่มาพร้อมกับ wamp เพียงแค่ให้อินเทอร์เฟซสำหรับ MySQL หากคุณเปลี่ยนรหัสผ่านของ sql root ของฉันคุณควรเปลี่ยนการกำหนดค่า phpmyadmin โดยปกติ phpmyadmin จะกำหนดค่าให้กับผู้ใช้รูท


ไม่คุณไม่สามารถ .. mysql จะไม่เริ่ม: c: \ wamp64 \ bin \ mysql \ mysql5.7.23 \ bin> mysql ERROR 1045 (28000): การเข้าถึงถูกปฏิเสธสำหรับผู้ใช้ 'ODBC' @ 'localhost' (โดยใช้รหัสผ่าน: ไม่)
Jaxx0rr

9

ฉันได้รับข้อผิดพลาดเดียวกันกับกัปตัน OS X El Mysql เวอร์ชัน 5.7.2 ฉันสามารถเชื่อมต่อกับ mysql ด้วย root หลังจากดำเนินการตามขั้นตอนเหล่านี้

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

sudo mysql.server stop

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

sudo mysqld_safe --skip-grant-tables

ใช้ mysqld เปลี่ยนฐานข้อมูลเป็น mysql และอัปเดตรายละเอียดสำหรับผู้ใช้ 'root'

show databases;
use mysql;
UPDATE mysql.user 
    SET authentication_string = PASSWORD('MyNewPass'), password_expired = 'N'
    WHERE User = 'root' AND Host = 'localhost';
exit;

หลังจากนั้นให้ฆ่ากระบวนการ 'mysqld_safe' และเริ่ม mysql ตามปกติ คุณควรจะสามารถเข้าสู่ระบบ mysql โดยใช้ root และรหัสผ่านใหม่ เอกสาร SQL สำหรับรายละเอียดเพิ่มเติม


4

เพียงแก้ไขmy.iniไฟล์ในเส้นทาง C: \ xampp \ mysql \ bin เพียงเพิ่ม:

skip-grant-tables

สายในระหว่างบรรทัดของและ# The MySQL server [mysqld] port=3306จากนั้นรีสตาร์ทเซิร์ฟเวอร์ MySQL

ดูเหมือนกับ:

ภาพหน้าจอ


เมื่อฉันทำสิ่งนี้ฉันได้รับข้อผิดพลาดอีกครั้งcommunications link failure
Ahmed Hussein

3

ตรวจสอบให้แน่ใจว่าบริการ MySQL กำลังทำงานบนเครื่องของคุณจากนั้นทำตามคำแนะนำจาก MySQL เพื่อเริ่มต้นการตั้งค่ารูท (ค้นหา 'windows' และจะนำคุณไปสู่ขั้นตอนในการตั้งค่ารูท):

http://dev.mysql.com/doc/refman/5.1/en/default-privileges.html


วิธีนี้ใช้ไม่ได้ผลสำหรับฉันเพราะฉันไม่มีรหัสผ่านที่ต้องใช้ในขั้นตอนที่สอง
Nasser Hadjloo

นี่คือสิ่งที่ฉันดูเมื่อฉันส่งลิงค์คุณแน่ใจหรือไม่ว่ามันใช้ไม่ได้? ฉันไม่เห็นการอ้างอิงถึงรหัสผ่านเดิม สำหรับ Windows ให้ทำสิ่งนี้: shell> mysql -u root mysql> ตั้งรหัสผ่านสำหรับ 'root' @ 'localhost' = PASSWORD ('newpwd'); mysql> ตั้งรหัสผ่านสำหรับ 'root'@'127.0.0.1' = รหัสผ่าน ('newpwd'); mysql> ตั้งรหัสผ่านสำหรับ 'root' @ '%' = รหัสผ่าน ('newpwd');
sholsapp

1
อย่างที่บอกไปก่อนหน้านี้ตอนที่เขียนmysql -u rootว่าประสบปัญหาและไม่สามารถล็อกอินเข้า mysql เพื่อรันบรรทัดที่สองได้ ดังนั้นจะใช้คำสั่งนี้ได้อย่างไร?
Nasser Hadjloo

3

ใช้ mysql -u root -p มันจะถามรหัสผ่านใส่รหัสผ่านแล้วป้อน


สิ่งนี้ใช้ได้ผลหลังจากที่ฉันถูกปฏิเสธการเข้าถึงสำหรับผู้ใช้
Shawn W

2

วิธีแก้ปัญหาอื่นหากมีคนได้รับข้อผิดพลาดรหัสผ่านที่ระบุสำหรับบัญชีผู้ใช้ 'root' ไม่ถูกต้องหรือไม่สามารถเชื่อมต่อกับเซิร์ฟเวอร์ฐานข้อมูลด้วยรหัสผ่านที่ถูกต้องมีดังต่อไปนี้

•ในรีจิสทรีของ Windows ให้ลบคีย์ reg mysql_pwd ภายใต้ HKCU \ Software \ Microsoft \ WebPlatformInstaller

• Unistall เวอร์ชันเก่าของตัวเชื่อมต่อ MySQL .NET

•ดาวน์โหลดและติดตั้งMySql .NET Connectorล่าสุด


การตรวจสอบรหัสผ่านและชื่อฐานข้อมูลใช้ได้ผลกับฉัน .. +1
Abhinav Dobhal

2

สำหรับ MySQL 5.7.2 นี่คือขั้นตอนด้านล่าง:

หยุดเซิร์ฟเวอร์ MySQL ของคุณโดยสมบูรณ์ สามารถทำได้โดยเข้าไปที่หน้าต่าง Services ภายใน Windows XP และ Windows Server 2003 ซึ่งคุณสามารถหยุดบริการ MySQL ได้

เปิดพรอมต์คำสั่ง MS-DOS โดยใช้ "cmd" ในหน้าต่าง Run ภายในจะไปที่โฟลเดอร์ MySQL bin ของคุณเช่น C: \ MySQL \ bin โดยใช้คำสั่ง cd

ดำเนินการคำสั่งต่อไปนี้ในพรอมต์คำสั่ง: mysqld.exe -u root --skip-grant-tables

ปล่อยให้พรอมต์คำสั่ง MS-DOS ปัจจุบันตามที่เป็นอยู่และเปิดหน้าต่างพรอมต์คำสั่ง MS-DOS ใหม่

ไปที่โฟลเดอร์ MySQL bin ของคุณเช่น C: \ MySQL \ bin โดยใช้คำสั่ง cd

ป้อน mysql แล้วกด Enter

ตอนนี้คุณควรให้พรอมต์คำสั่ง MySQL ทำงาน พิมพ์ใช้ mysql; เพื่อให้เราเปลี่ยนไปใช้ฐานข้อมูล "mysql"

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

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


1

ในรหัสของคุณแทนที่'root'ด้วยชื่อผู้ใช้และรหัสผ่านเซิร์ฟเวอร์ของคุณด้วยรหัสผ่านเซิร์ฟเวอร์ของคุณ ตัวอย่างเช่นหากคุณมี DB และไฟล์ php บนเซิร์ฟเวอร์http://www.example.com แน่นอนว่าคุณจะต้องเข้าสู่ไซต์เซิร์ฟเวอร์นี้โดยใช้ชื่อผู้ใช้และรหัสผ่านของคุณ


1

หากคุณใช้ XAMPP เพียงไปที่C:\xampp\phpMyAdminแล้วเปิดconfig.inc.phpค้นหา$cfg['Servers'][$i]['password'] = ''บรรทัดและใส่รหัสผ่านของคุณที่นั่น


1

สำหรับข้อมูลบางอย่างฉันพบข้อผิดพลาดหลังจากเปลี่ยนรหัสผ่าน:

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

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

ในทั้งสองกรณีมีข้อผิดพลาด

แต่หลังจากนั้นฉันได้ลองใช้แล้ว

mysql -uroot -ppassword แทน

mysql -u root -p password -> มีช่องว่างระหว่าง -uroot และ -ppassword ดังนั้นบางทีหากมีคนประสบปัญหาสามารถลองวิธีนี้


0

บางครั้งก็เกิดขึ้นเนื่องจากการติดตั้ง Wamp หรือการเปลี่ยนตัวเลือกรหัสผ่านของผู้ใช้รูท หนึ่งสามารถใช้ความเป็นส่วนตัว -> root (ผู้ใช้) จากนั้นตั้งค่าตัวเลือกรหัสผ่านเป็น NO เพื่อเรียกใช้สิ่งต่างๆโดยไม่ต้องใช้รหัสผ่านหรือตั้งรหัสผ่านและใช้ในแอปพลิเคชัน


0
  1. เปลี่ยนรหัสผ่านจากconfig.inc.phpปัจจุบันในC:\xampp\phpMyAdminในปัจจุบัน
  2. ประเภท mysql -u root -pพร้อมรับคำสั่ง
  3. คุณจะถูกขอให้ป้อนรหัสผ่าน ป้อนรหัสผ่านที่คุณอัปเดตในไฟล์config.inc.php.

0

หากคุณเปลี่ยนพอร์ตเป็นพอร์ตที่ไม่ได้มาตรฐานคุณจะต้องระบุ:

$ connection = mysqli_connect ('localhost: 3308', 'root', '', 'loginapp');


-3
mysqladmin -u root -p password

ป้อนไฟล์ current password

แล้ว

ป้อนไฟล์ new password


1
จุดรวมคือการที่สหกรณ์ไม่ทราบรหัสผ่านปัจจุบันเพราะมันก็ไม่เคยตั้ง
Nateowami

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