2012-07-25 41 views
32

Tôi đã gặp sự cố với mysql. Tôi cố gắng để thực hiện điều này:quyền truy cập bị từ chối đối với người dùng debian-sys-maint

echo "show databases" | mysql -B -N 

Nhưng tôi nhận:

ERROR 1045 (28000): Access denied for user 'debian-sys-maint'@'localhost' (using password: YES) 

Nhưng khi tôi exec:

/etc/init.d/mysql restart 

tôi có một 'OK'.

tôi đã làm

GRANT ALL PRIVILEGES on *.* TO [email protected] IDENTIFIED BY PASSWORD 'your password' WITH GRANT OPTION; FLUSH PRIVILEGES; 

nơi mật khẩu là từ /etc/mysql/debian.cnf. Nhưng nó không giúp được gì. (Tất nhiên tôi đã xóa sạch priv và khởi động lại mysql).

Trả lời

15

Vấn đề là, tuyên bố GRANT của bạn sử dụng IDENTIFIED BY PASSWORD khoản, và trong trường hợp này mysql mong đợi để có được một băm mật khẩu, không phải là một văn bản gốc.

Sử dụng IDENTIFIED BY 'your password' thay vào đó, nếu bạn muốn cung cấp mật khẩu thô.

87

Đó là vì Debian có tài khoản MySQL debian-sys-maint được sử dụng để bật/tắt và kiểm tra trạng thái. Mật khẩu cho người dùng đó phải giống như mật khẩu được lưu trữ trong /etc/mysql/debian.cnf. Các tập tin trông như thế này:

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

Nếu mật khẩu không phù hợp (ví dụ bởi vì bạn đã thay đổi nó bằng tay) init script sẽ không hoạt động nữa. Bạn nên đặt mật khẩu theo tệp. Vì vậy,

mysql -u root -p 
# Then type MySQL root password 
GRANT ALL PRIVILEGES ON *.* TO 'debian-sys-maint'@'localhost' IDENTIFIED BY '<password>'; 
+0

Tôi có các trường [client] và [mysql_upgrade] trong /etc/mysql/debian.cnf. Mật khẩu giống nhau trong tệp và trong cơ sở dữ liệu cho người dùng. –

+1

Có, tất cả những gì bạn cần - cập nhật mật khẩu, vì mật khẩu này là duy nhất cho mỗi lần cài đặt. Ví dụ: bạn di chuyển data_dir từ máy chủ này sang máy chủ khác, vì vậy, mật khẩu không khớp với –

3

Cách dễ nhất để khôi phục người dùng debian-sys-maint là định cấu hình lại gói mysql-server-5.5. Điều đó nếu bạn biết mật khẩu cho người dùng root của MySQL, bạn có thể thử khôi phục người dùng và mật khẩu của nó trong /etc/mysql/debian.cnf.

sudo dpkg-reconfigure mysql-server-5.5 

LƯU Ý: nếu bạn không thể dừng mysql pid, chỉ cần chạy sudo killall mysqld. Điều này là cần thiết để cấu hình lại máy chủ mysql-5.5.

+0

tính năng này không hoạt động. – specializt

+0

@specializt. Nó giải quyết vấn đề của tôi. Hãy cẩn thận về ký hiệu trên. – shgnInc

+0

Tại sao tôi nên "cẩn thận" về một số "ký hiệu"? Điều đó không có ý nghĩa gì cả. – specializt

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