遠程訪問mysql
訪問mysql:ERROR 1045 (28000): Access denied for user ‘root‘@‘localhost‘ (using password: NO)
解決方法
一、修改root用戶的密碼
方法一:
/etc/init.d/mysql stop
mysqld_safe --user=mysql --skip-grant-tables --skip-networking & //跳過權限
mysql -u root mysql**
mysql> UPDATE user SET Password=PASSWORD(‘newpassword‘) where USER=‘root‘;
mysql> quit
/etc/init.d/mysql restart
mysql -uroot -p
Enter password: <輸入新設的密碼newpassword>
mysql>
方法二
使用mysqladmin。輸入
mysqladmin -u root -p oldpassword newpasswd
執行這個命令後,需要輸入root的原密碼,這樣root的密碼將改為newpasswd。同樣,把命令裏的root改為你的用戶名,你就可以改你自己的密碼了。
當然如果你的mysqladmin連接不上mysql server,或者你沒有辦法執行mysqladmin,那麽這種方法就是無效的,而且mysqladmin無法把密碼清空。
下面的方法都在mysql提示符下使用,且必須有mysql的root權限:
方法三
mysql> INSERT INTO mysql.user (Host,User,Password) VALUES(‘%‘,‘admin‘, PASSWORD(‘admin‘));
mysql> FLUSH PRIVILEGES
這是在增加一個用戶,用戶名和密碼為admin。註意要使用PASSWORD函數,然後還要使用FLUSH PRIVILEGES來執行確認。
方法四
和方法三一樣,只是使用了REPLACE語句
mysql> REPLACE INTO mysql.user(Host,User,Password)VALUES(‘%‘,‘system‘,PASSWORD(‘manager‘));
方法五
使用SET PASSWORD語句
mysql> SET PASSWORD FOR system@"%" = PASSWORD(‘manager‘);
你也必須使用PASSWORD()函數,但是不需要使用FLUSH PRIVILEGES來執行確認。
方法六
使用GRANT ... IDENTIFIED BY語句,來進行授權。
mysql> grant all privileges on . to root@localhost identified by ‘Admin123‘ with grant option;
mysql> FLUSH PRIVILEGES
這裏PASSWORD()函數是不必要的,也不需要使用FLUSH PRIVILEGES來執行確認。
PASSWORD()函數作用是為口令字加密,在程序中MySql自動解釋。
遠程訪問mysql