Quyền truy cập bị từ chối đối với người dùng 'root @ localhost' (sử dụng mật khẩu: KHÔNG)


115

Tôi mới sử dụng MySQL, tôi đang cố gắng chạy WordPress trên máy tính để bàn Windows của mình và nó cần MySQL.

Tôi cài đặt mọi thứ Web Platform Installerđược cung cấp bởi Microsoft. Tôi chưa bao giờ đặt mật khẩu gốc cho MySQL và trong bước cuối cùng của quá trình cài đặt WordPress, nó yêu cầu mật khẩu máy chủ MySQL.

Mật khẩu mặc định cho root là gì (nếu có) và làm thế nào để thay đổi nó?

Tôi đã thử:

mysql -u root password '123'

Nhưng nó cho tôi thấy:

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

Sau đó, tôi thử:

mysql -u root -p

Tuy nhiên, nó yêu cầu một mật khẩu mà tôi không có.


Cập nhật : như Bozho đề xuất, tôi đã làm như sau:

  1. Tôi đã dừng Dịch vụ MySQL khỏi các dịch vụ Windows
  2. CMD đã mở
  3. Đã thay đổi vị trí thành c: \ program files \ mysql \ bin
  4. Đã thực hiện lệnh dưới đây

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

  5. Lệnh chạy với cảnh báo về bộ ký tự mà tôi đã đề cập bên dưới

  6. Tôi bắt đầu dịch vụ MySQL từ các dịch vụ Windows
  7. Tôi viết trong dòng lệnh

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

  8. Dòng lệnh hiển thị lỗi sau

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

Tôi giải quyết điều này như thế nào? Tôi đang đợi tin từ bạn.


1
Lệnh đầu tiên là sai, nên là -phoặc --password, nhưng không password. Đó là lý do tại sao mysql trả lời bằng cách SỬ DỤNG MẬT KHẨU KHÔNG.
Konerak

3
Dường như không ai cho anh ta câu trả lời rõ ràng. Mật khẩu cho rootuserid trống sau khi cài đặt ban đầu. Vì vậy, chỉ cần làm mysql -u root -pvà sau đó chỉ cần nhấn enter, tức là để trống mật khẩu. Sau đó, tất nhiên đặt một mật khẩu trên rootuserid.
RiggsFolly

1
@RiggsFolly nope, không hoạt động! mật khẩu trống cho phép tôi truy cập bị từ chối!
J86

Tôi muốn thêm một nhận xét vì tôi không chắc câu trả lời được chấp nhận là câu trả lời chính xác. Đối với tôi, gõ mysql -u root -p và sau đó khi được nhắc nhập mật khẩu, hãy nhập mật khẩu phù hợp (mật khẩu được đặt lúc cài đặt) đã hoạt động. Thay vào đó, việc chứng minh tên của một DB thành -p với một DB mà tôi biết là tồn tại đã không hoạt động.
Carmine Tambascia

Câu trả lời:


48

Bạn có thể đặt lại mật khẩu gốc của mình . Hãy nhớ rằng không nên sử dụng root mà không có mật khẩu.


@Bozho - Tôi làm theo hướng dẫn và tạo một tệp văn bản và gọi nó từ lệnh đã đề cập, sau đó tôi phải đối mặt với 100608 [warning] --default-character-set is deprecated and will be removed in a future release. please use --character-set-server instead.------------------------ -------- và cuối cùng khi tôi bắt đầu lại dịch vụ mysql của mình, tôi phải đối mặt với lỗi chính xác nhưng lần này (using password:yes)tôi phải làm gì?
Nasser Hadjloo

@Bozo - Lưu ý rằng tôi không thể chạy lệnh của bạn khi mysqldt-nttôi chạy nó bởi mysqldt -ntTrên thực tế, lệnh đầu tiên không thể nhận dạng được đối với cmd. Tôi đang đợi tin từ bạn.
Nasser Hadjloo

@Bozho - Tôi đã cập nhật câu hỏi của mình với lỗi. cảm ơn bạn đã dành thời gian.
Nasser Hadjloo

@Bozho - có cách nào để cập nhật / tùy chỉnh các lỗi mysql của tôi không? ** Cập nhật "Quyền truy cập bị từ chối đối với người dùng 'root @ localhost' (sử dụng mật khẩu: NO)" thành "Quyền truy cập bị từ chối đối với người dùng 'myname @ localhost' (sử dụng mật khẩu: NO)" **
Hitesh 17/11/16

81

đối với loại lỗi này; bạn chỉ cần đặt mật khẩu mới cho người dùng root với tư cách là quản trị viên. làm theo các bước như sau:

[root ~]# mysql -u root
ERROR 1045 (28000): Access denied for user 'root'@'localhost' (using password:NO)
  1. Dừng dịch vụ / daemon của mysql đang chạy

    [root ~]# service mysql stop   
    mysql stop/waiting
  2. Khởi động mysql mà không có bất kỳ đặc quyền nào bằng cách sử dụng tùy chọn sau; Tùy chọn này được sử dụng để khởi động và không sử dụng hệ thống đặc quyền của MySQL.

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

Tại thời điểm này, thiết bị đầu cuối dường như sẽ dừng lại . Hãy để như vậy và sử dụng thiết bị đầu cuối mới cho các bước tiếp theo.

  1. nhập dấu nhắc lệnh mysql

    [root ~]# mysql -u root
    mysql> 
  2. Sửa cài đặt quyền của người dùng root;

    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)

* nếu bạn không muốn bất kỳ mật khẩu nào hoặc đúng hơn là một mật khẩu trống

    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)

Xác nhận kết quả:

    mysql> select host, user from user;
+-----------+------+
| host      | user |
+-----------+------+
| localhost | root |
+-----------+------+
1 row in set (0.00 sec)
  1. Thoát khỏi trình bao và khởi động lại mysql ở chế độ bình thường.

    mysql> quit;
    [root ~]# kill -KILL [PID of mysqld_safe]
    [root ~]# kill -KILL [PID of mysqld]
    [root ~]# service mysql start
  2. Bây giờ bạn có thể đăng nhập thành công với tư cách người dùng root với mật khẩu bạn đã đặt

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

2
Nhấn Enter sau "[root ~] # mysqld_safe --skip-Grant -boards &" và mở một thiết bị đầu cuối khác để vào "[root ~] # mysql -u root"
Liuda 23/02/16

tôi đã gặp sự cố này và tôi đã làm rất nhiều, chỉ cần quên khởi động lại các dịch vụ db ... cảm ơn rất nhiều!
Bruce Lee

3
Ở bước 3, tôi nhận đượcERROR 2002 (HY000): Can't connect to local MySQL server through socket '/var/run/mysqld/mysqld.sock' (2)
MrMartin

4
@MrMartin, tạo rằng dir sudo mkdir -p /var/run/mysqldvà cho phép cung cấp cho nósudo chown mysql:mysql /var/run/mysqld
Niceday

đây là câu trả lời đã giúp tôi rất nhiều!
Jones G

17

1) Bạn có thể đặt mật khẩu gốc bằng cách gọi MySQL console. Nó nằm tại

C:\wamp\bin\mysql\mysql5.1.53\bin theo mặc định.

Vào thư mục và gõ MySQL. sau đó đặt mật khẩu như sau ..

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

2) Bạn có thể định cấu hình ứng dụng phpmyadmin của wamp cho người dùng root bằng cách chỉnh sửa

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

Lưu ý: - nếu bạn đang sử dụng xampp thì tệp sẽ được đặt tại

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

Nó trông như thế này:

        $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;

Lỗi "Quyền truy cập bị từ chối đối với người dùng 'root @ localhost' (sử dụng mật khẩu: NO)" sẽ được giải quyết khi bạn đặt $cfg['Servers'][$i]['AllowNoPassword']thành false

Nếu trước đây bạn đã thay đổi mật khẩu cho 'root @ localhost', thì bạn phải thực hiện 2 điều để giải quyết lỗi "Quyền truy cập bị từ chối cho người dùng 'root @ localhost'":

  1. nếu ['password'] có dấu ngoặc kép trống như '' thì hãy đặt mật khẩu của bạn giữa dấu ngoặc kép.
  2. thay đổi (sử dụng mật khẩu: KHÔNG) thành (sử dụng mật khẩu: CÓ)

Điều này sẽ giải quyết lỗi.

Lưu ý: phpmyadmin là một công cụ riêng biệt đi kèm với wamp. Nó chỉ cung cấp một giao diện cho MySQL. nếu bạn thay đổi mật khẩu sql root của tôi, thì bạn nên thay đổi cấu hình phpmyadmin. Thông thường phpmyadmin được cấu hình cho người dùng root.


không, bạn không thể .. mysql sẽ không bắt đầu: c: \ wamp64 \ bin \ mysql \ mysql5.7.23 \ bin> mysql ERROR 1045 (28000): Quyền truy cập bị từ chối đối với người dùng 'ODBC' @ 'localhost' (sử dụng mật khẩu: KHÔNG)
Jaxx0rr 19/12/18

9

Tôi cũng gặp lỗi tương tự trên OS X El đội trưởng. Mysql phiên bản 5.7. Tôi đã có thể kết nối với mysql bằng root sau khi thực hiện các bước này.

Dừng máy chủ mysql

sudo mysql.server stop

Khởi động mysql ở chế độ an toàn

sudo mysqld_safe --skip-grant-tables

Sử dụng mysqld, Thay đổi cơ sở dữ liệu thành mysql và cập nhật chi tiết cho người dùng 'root'.

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

Sau đó, hãy giết quá trình 'mysqld_safe' và khởi động mysql bình thường. Bạn sẽ có thể đăng nhập vào mysql bằng cách sử dụng root và mật khẩu mới. Tài liệu SQL để biết thêm chi tiết


4

Chỉ cần chỉnh sửa my.initệp trong đường dẫn C: \ xampp \ mysql \ bin. Chỉ cần thêm:

skip-grant-tables

giữa các dòng của # The MySQL server [mysqld]port=3306 . Sau đó khởi động lại máy chủ MySQL.

Giống như:

Ảnh chụp màn hình


Khi tôi làm điều này tôi nhận được một lỗicommunications link failure
Ahmed Hussein

3

Đảm bảo rằng dịch vụ MySQL đang chạy trên máy của bạn, sau đó làm theo hướng dẫn từ MySQL để thiết lập root ban đầu (tìm kiếm 'windows' và nó sẽ đưa bạn đến các bước để thiết lập root):

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


Giải pháp này sẽ không hoạt động đối với tôi vì tôi không có mật khẩu mà nó cần ở bước thứ hai.
Nasser Hadjloo

Đây là những gì tôi đã xem khi tôi gửi liên kết, bạn có chắc điều này không hoạt động không? Tôi không thấy bất kỳ tham chiếu nào đến mật khẩu cũ. Đối với Windows, hãy thực hiện việc này: shell> mysql -u root mysql> SET PASSWORD FOR 'root' @ 'localhost' = PASSWORD ('newpwd'); mysql> ĐẶT MẬT KHẨU CHO 'root'@'127.0.0.1' = PASSWORD ('newpwd'); mysql> ĐẶT MẬT KHẨU CHO 'root' @ '%' = MẬT KHẨU ('newpwd');
sholsapp

1
Như tôi đã nói trước đây khi tôi viết, mysql -u roottôi gặp sự cố và tôi không thể đăng nhập vào mysql để chạy dòng thứ hai. vậy Làm thế nào để sử dụng lệnh này?
Nasser Hadjloo

3

Sử dụng mysql -u root -p Nó sẽ hỏi mật khẩu, chèn mật khẩu và nhập.


Điều này đã hoạt động sau khi tôi bị từ chối Quyền truy cập cho người dùng.
Shawn W

2

Một giải pháp khác nếu ai đó gặp lỗi Mật khẩu được chỉ định cho tài khoản người dùng 'root' không hợp lệ hoặc không thể kết nối với máy chủ cơ sở dữ liệu cũng với mật khẩu phù hợp, đó là

• Trong sổ đăng ký Windows, xóa khóa reg mysql_pwd trong HKCU \ Software \ Microsoft \ WebPlatformInstaller

• Unistall phiên bản cũ hơn của trình kết nối MySQL .NET

• Tải xuống và cài đặt MySql .NET Connector mới nhất .


Kiểm tra mật khẩu và tên cơ sở dữ liệu đã làm việc cho tôi .. +1
Abhinav Dobhal

2

Đối với MySQL 5.7. Đây là các bước dưới đây:

Dừng hoàn toàn máy chủ MySQL của bạn. Điều này có thể được thực hiện bằng cách truy cập cửa sổ Dịch vụ bên trong Windows XP và Windows Server 2003, nơi bạn có thể dừng dịch vụ MySQL.

Mở dấu nhắc lệnh MS-DOS của bạn bằng cách sử dụng "cmd" bên trong cửa sổ Chạy. Bên trong nó điều hướng đến thư mục bin MySQL của bạn, chẳng hạn như C: \ MySQL \ bin bằng cách sử dụng lệnh cd.

Thực thi lệnh sau trong dấu nhắc lệnh: mysqld.exe -u root --skip-Grant -boards

Giữ nguyên dấu nhắc lệnh MS-DOS hiện tại và mở cửa sổ dấu nhắc lệnh MS-DOS mới.

Điều hướng đến thư mục bin MySQL của bạn, chẳng hạn như C: \ MySQL \ bin bằng lệnh cd.

Nhập mysql và nhấn enter.

Bây giờ bạn sẽ có dấu nhắc lệnh MySQL hoạt động. Gõ use mysql; để chúng tôi chuyển sang cơ sở dữ liệu "mysql".

Thực hiện lệnh sau để cập nhật mật khẩu:

cập nhật tập người dùng xác thực_string = mật khẩu ('1111') nơi user = 'root';


1

Trong mã của bạn, hãy thay thế 'root' bằng tên người dùng và mật khẩu Máy chủ bằng mật khẩu máy chủ của bạn. Ví dụ: nếu bạn có DB và các tệp php của bạn trên máy chủ http://www.example.com thì hiển nhiên bạn sẽ phải truy cập vào trang web máy chủ này bằng tên người dùng và mật khẩu của mình.


1

Nếu bạn đang sử dụng XAMPP chỉ cần truy cập C:\xampp\phpMyAdminvà sau đó mở dòng config.inc.phptìm kiếm $cfg['Servers'][$i]['password'] = ''và đặt mật khẩu của bạn ở đó.


1

Đối với một số thông tin tôi gặp lỗi sau khi thay đổi mật khẩu:

Quyền truy cập bị từ chối đối với người dùng 'root' @ 'localhost' (sử dụng mật khẩu: KHÔNG)

Quyền truy cập bị từ chối đối với người dùng 'root' @ 'localhost' (sử dụng mật khẩu: CÓ)

Trong cả hai trường hợp đều có lỗi.

Nhưng vấn đề là sau đó tôi đã thử nó với

mysql -uroot -ppassword thay vì

mysql -u root -p password -> có khoảng trắng giữa -uroot và -ppassword nên có thể nếu ai đó gặp khó khăn có thể thử cách này.


0

Đôi khi nó chỉ xảy ra do cài đặt Wamp hoặc thay đổi tùy chọn mật khẩu của người dùng root. Người ta có thể sử dụng privilages -> root (người dùng) và sau đó đặt tùy chọn mật khẩu thành KHÔNG để chạy những thứ mà không cần mật khẩu HOẶC đặt mật khẩu và sử dụng nó trong ứng dụng.


0
  1. Thay đổi mật khẩu từ config.inc.phphiện tại C:\xampp\phpMyAdmin.
  2. Nhập mysql -u root -pvào dấu nhắc lệnh.
  3. Bạn sẽ được yêu cầu nhập mật khẩu. Nhập mật khẩu mà bạn đã cập nhật trong config.inc.php.

0

nếu bạn đã thay đổi cổng thành cổng không chuẩn, thì bạn cần chỉ định nó:

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


-3
mysqladmin -u root -p password

nhập của bạn current password

sau đó

nhập của bạn new password


1
Toàn bộ vấn đề là OP không biết mật khẩu hiện tại, vì nó chưa bao giờ được đặt .
Nateowami

Tôi biết mật khẩu của mình nhưng gặp sự cố khi đăng nhập bằng mật khẩu tạm thời. câu trả lời này phù hợp với tôi
Bernard
Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.