2013-08-20 40 views
10

tôi đã làm các bước sau để sử dụng MySQL trong Ubuntu:MYSQL Truy cập bị từ chối cho người dùng 'root' @ 'localhost'

sudo aptitude install php5-mysql mysql-server 
sudo service mysql stop 
sudo mysqld_safe --skip-grant-tables & 
sudo mysql -u root mysql 

Thay đổi mật khẩu root:

mysql> UPDATE mysql.user SET Password=PASSWORD('SecurePassword') WHERE 
User='root'; 
mysql> FLUSH PRIVILEGES; 
mysql> EXIT 

Sửa đổi/etc/mysql/my.cnf:

[client] 
user=root 
password=SecurePassword 
[mysqld] 
... 
default-time-zone = '+0:00' 

Sau đó:

sudo service mysql start 
mysql -u root 
mysql> SHOW GRANTS FOR [email protected] 
+--------------------------------------------------------------------------------------------------+ 
| Grants for [email protected] | 
+--------------------------------------------------------------------------------------------------+ 
| GRANT USAGE ON *.* TO 'root'@'localhost' IDENTIFIED BY PASSWORD '[here is the Securepassword]' | 
+-------------------------------------------------------------------------------------------------+ 
1 row in set (0.00 sec) 

mysql> 
GRANT ALL PRIVILEGES ON *.* TO 'root'@'localhost' WITH GRANT OPTION; 

và tôi nhận được một lỗi:

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

+2

Kiểm tra 'bind-address = localhost' trong' ini' của bạn. – user2339071

Trả lời

2

Đó là hoàn toàn chính xác những gì bạn đã làm, nhưng tôi đoán nó không làm việc vì một lý do nhỏ.

Bạn nên sử dụng identified by password khi bạn đang đi đến cấp đặc quyền như thế này:

mysql> GRANT ALL PRIVILEGES ONE `*`.`*` TO 'root'@'localhost' IDENTIFIED BY PASSWORD 
'*A4B6157319038724E3560894F7F932C8886EBFCF' WITH GRANT OPTION; 
+0

Tôi không nghĩ bạn đúng, 'IDENTIFY BY PASSWORD' mong đợi mật khẩu thuần văn bản, không phải giá trị' PASSWORD ('') ' – nrathaus

0

Nếu bạn nhận được một thông báo lỗi như thế này:

Warning: mysql_connect(): Access denied for user: .... 

sau đó vấn đề là ứng dụng của bạn không thể access the database. Điều này có thể có nhiều nguyên nhân:

Trước hết, hãy chắc chắn các thiết lập cơ sở dữ liệu trong db-config.php của bạn (tập tin kết nối cho ứng dụng của bạn) là chính xác, đặc biệt là namepassword của người sử dụng MySQL của bạn, tên của database của bạn, và tên máy chủ MySQL của bạn.

Nếu bạn đang chạy máy chủ của riêng mình, bạn có thể cần cấp cho người dùng MySQL quyền thích hợp của mình. Đăng nhập vào MySQL với tư cách là người dùng root MySQL và đưa ra các lệnh sau:

GRANT ALL PRIVILEGES ON database_name TO [email protected] IDENTIFIED BY 'password'; 
FLUSH PRIVILEGES; 
+0

Xin lưu ý rằng chúng tôi mong đợi câu trả lời để giải quyết các vấn đề * cụ thể * trong câu hỏi. Hãy chắc chắn chú ý đến ngôn ngữ, nền tảng, thư viện, v.v ... đang được sử dụng và chắc chắn tìm giải pháp cho vấn đề chính xác. Ví dụ; câu hỏi này là ** không ** về PHP chút nào. –

Các vấn đề liên quan