2014-09-25 170 views
0

我使用下面的命令安裝了MySQL:無法登錄到MySQL

sudo apt-get install mysql-server mysql-client mysql-common 

它要求我輸入root密碼(在程序包配置),我輸入一個和確認。

sudo /etc/init.d/mysql start 

然而,當我嘗試登錄到使用用戶爲root,這是我在上一步中提供的密碼的MySQL,它拒絕了我的訪問:

[email protected]:/etc# > mysql --user root --password 
Enter password: 
ERROR 1045 (28000): Access denied for user 'root'@'localhost' (using password: YES). 

,我做的另一種嘗試是卸載並重新安裝MySQL沒有提供密碼,但也失敗了。

我再開機的服務器上的用戶到mysql

[email protected]:/etc# sudo -u mysql -s 
[email protected]:/etc# sudo -u mysql -s 
bash: /root/.bashrc: Permission denied 
[email protected]:/etc$ mysql -u root -p 
Enter password: 
ERROR 1045 (28000): Access denied for user 'root'@'localhost' (using password: YES) 

在這一點上我可以只啓動和停止MySQL的。任何想法,我可能會出錯?

[編輯]

搜索了很多後,我發現一個可以登錄到使用Debian-SYS-MAINT的用戶名和密碼這是在debian.cnf文件mysql的。在mysql數據庫中沒有'root'用戶,因此我嘗試的所有內容都被拒絕訪問。 我不知道這是否是一種安全的方式來做到這一點。

回答

0

來自http://dev.mysql.com/doc/refman/5.0/en/resetting-permissions.html

Stop mysqld and restart it with the --skip-grant-tables option. This enables anyone to connect without a password and with all privileges. Because this is insecure, you might want to use --skip-grant-tables in conjunction with --skip-networking to prevent remote clients from connecting. 

Connect to the mysqld server with this command: 

shell> mysql 

Issue the following statements in the mysql client. Replace the password with the password that you want to use. 

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

The FLUSH statement tells the server to reload the grant tables into memory so that it notices the password change. 

您現在應該能夠連接到MySQL服務器使用新密碼的根。停止服務器,然後正常重啓(沒有--skip-grant-tables和--skip-networking選項)。