標籤:
MYSQL設定遠程賬戶登陸總結
1. ERROR 2003 (HY00 1
2. ERROR 1045 (28000): Access denied for user ‘test‘@‘x.x.x.x‘ (using password: NO) 1
3. 取回ROOT密碼並設定遠程登入 2
4. RROR 1062 (23000): Duplicate entry ‘%-root‘ for key ‘PRIMARY‘ 2
5. ERROR 1044 (42000): Access denied for user ‘‘@‘localhost‘ to database ‘mysql‘。 3
6. 設定使用者遠程主機串連許可權 4
7. 設定使用者與庫的許可權 4
----作者Attilax , [email protected]
為了給MYSQL使用者佈建一個遠端連線許可權,經曆了很多曲折..特此紀錄下來..先是玉到了2003錯誤
ERROR 2003 (HY00
原因是MySQL考慮到安全因素,預設配置只讓從本地登入
開啟 /etc/mysql/my.cnf 檔案,找到 bind-address = 127.0.0.1 修改為 bind-address = 0.0.0.0
重啟mysql : sudo /etc/init.d/mysql restart
再次串連,發生錯誤 1045
ERROR 1045 (28000): Access denied for user ‘test‘@‘x.x.x.x‘ (using password: NO)
A: 原因是沒有給登入使用者名稱設定遠程主機登入的許可權。還有種可能是你需要重設下密碼....可能是授權操作引起這種後遺症..
在本地用 root 登入: mysql -u root -p
修改 MySQL 資料庫中 user 表中 對應使用者名稱的 Host 欄位,將 localhost 改為 %
use mysql;
update user set Host = ‘%‘ where User = ‘username‘;
給這個設定許可權需要ROOT使用者登入才行.可惜ROOT密碼不記得了.
取回ROOT密碼並設定遠程登入
mysqld_safe --skip-grant-tables &
mysql -u root mysql
mysql> UPDATE user SET Password=PASSWORD(‘newpassword‘) where USER=‘root‘;
mysql> FLUSH PRIVILEGES;
設定 ROOT 遠端連線 update user set host = ‘%‘ where user=‘root‘;
查看進程,可看到MYSQLD_SAFE與MYSQL進程,此時MYSQL可正常使用,不過查看參數,可看到--skip-grant-tab
輸入mysqld_safe命令列,要立馬輸入mysql -u root mysql,不得有誤..或者新開一個視窗也可.
執行UPDATE時出現1062錯誤
RROR 1062 (23000): Duplicate entry ‘%-root‘ for key ‘PRIMARY‘
如果執行update語句時出現ERROR 1062 (23000): Duplicate entry ‘%-root‘ for key ‘PRIMARY‘ 錯誤,說明有多個ROOT使用者紀錄在USER表中了.
需要select host from user where user = ‘root‘;
查看一下host是否已經有了%這個值,有了就可以了.
mysql> select host,user from user where user=‘root‘;
+-----------------------+------+
| host | user |
+-----------------------+------+
| % | root |
| 127.0.0.1 | root |
| ::1 | root |
| localhost.localdomain | root |
然後用ROOT使用者登入更改使用者賬戶的遠端連線許可權時.出現提示:ERROR 1044 (42000): Access denied for user ‘‘@‘localhost‘ to database ‘mysql‘。
ERROR 1044 (42000): Access denied for user ‘‘@‘localhost‘ to database ‘mysql‘。
是因為mysql資料庫的user表裡,存在使用者名稱為空白的賬戶即匿名賬戶,導致登入的時候是雖然用的是root,但實際是匿名登入的,通過錯誤提示裡的‘‘@‘localhost‘可以看出來,於是解決辦法見
先關閉MYSQL進程..
然後
# mysqld_safe --skip-grant-table
螢幕出現: Starting demo from .....
此時要記得,緊接著輸入
# mysql -u root mysql
mysql> delete from user where USER=‘‘;
mysql> FLUSH PRIVILEGES;
如果出現 Starting demo from .. 後..先輸入其它命令,再用mysql -u root mysql .它又會出現這個錯誤了.
然後KILL掉MYSQL進程,..重啟正常的進程..
設定使用者遠程主機串連許可權
update user set host = ‘%‘ where user=‘fanzkcom_fanzk‘;
FLUSH PRIVILEGES;
但是在實際串連中,雖然可以串連,但是去沒有所在庫的許可權,暈.
只好接下來設定許可權
設定使用者與庫的許可權
grant all privileges on fanzkcom_fanzk.* to [email protected]‘%‘ identified by ‘1234‘;
FLUSH PRIVILEGES;
百分比符號兩邊要有單引號,否則語法錯誤
然後串連時,竟然提示1045 錯誤了.暈,,想了半天,還是重設下密碼試下.
update mysql.user set password=password(‘XXX‘) where User="fanzkcom_fanzk"
flush privileges;
竟然好了.暈.也不知道為什麼設定授權會改動了密碼了呢.奇怪..應該是MYSQL的BUG
轉載:http://blog.csdn.net/attilax/article/details/8595696#_Toc25697
PAIP.MYSQL設定遠程賬戶登陸總結