盛網(wǎng)攻城師——mysql基本遠(yuǎn)程錯(cuò)誤處理方法

相信有很多人都會(huì)用到mysql數(shù)據(jù)庫,因?yàn)楝F(xiàn)在任何網(wǎng)絡(luò)上的東西是能夠離開數(shù)據(jù)的。所以數(shù)據(jù)庫就是非常常見的軟件了,而有很多新手小白,一開始用的時(shí)候遇到數(shù)據(jù)庫遠(yuǎn)程連接報(bào)錯(cuò)是一臉懵的,完全不知道是什么意思。這里盛網(wǎng)攻城師專門收集整理了一些東西發(fā)出來,希望能幫到大家。有興趣的還可以加我聯(lián)系(2247597368)

## 1. ERROR 2003(hy000):can't connect to mysql server on 'localhost' (10061)

原因是MySQL考慮到安全因素,默認(rèn)配置只讓從本地登錄

打開?/etc/mysql/my.cnf?文件,找到?bind-address = 127.0.0.1?修改為?bind-address = 0.0.0.0

重啟`mysql : sudo /etc/init.d/mysql restart`

再次連接,發(fā)生錯(cuò)誤?1045


## 2. ERROR 1045 (28000): Access denied for user 'root'@'x.x.x.x' (using password: NO)

-?原因是沒有給登錄用戶名設(shè)置遠(yuǎn)程主機(jī)登錄的權(quán)限。還有種可能是你需要重設(shè)下密碼....可能是授權(quán)操作引起這種后遺癥..

-?在本地用?root?登錄:

????```

??????# mysql -u root -p

????```

修改?MySQL?數(shù)據(jù)庫中?user?表中 對應(yīng)用戶名的?Host?字段,將?localhost?改為?`%`

????```

??????mysql> use mysql;

??????mysql> update user set Host = '%' where User = 'username';

????```


## 3.?取回ROOT密碼并設(shè)置遠(yuǎn)程登錄

-?重設(shè)?ROOT密碼

????```

??????# mysqld_safe --skip-grant-tables &

??????# mysql -u root mysql

??????mysql> UPDATE user SET Password=PASSWORD('newpassword') where USER='root';

??????mysql> FLUSH PRIVILEGES;

????```

-?設(shè)置?ROOT?遠(yuǎn)程連接 ?

????```

??????mysql> update user set host = '%' ??where user='root';

????```

- Kill進(jìn)程,重啟?mysqld

查看進(jìn)程`PS -A | grep mysql `,可看到MYSQLD_SAFE與MYSQL進(jìn)程,此時(shí)MYSQL可正常使用,不過查看參數(shù),可看到`--skip-grant-tab`

輸入?`kill -9 [pid]`?關(guān)閉進(jìn)程



## 4. ERROR 1062 (23000): Duplicate entry '%-root' for key 'PRIMARY'

如果執(zhí)行update語句時(shí)出現(xiàn)ERROR 1062 (23000): Duplicate entry '%-root' for key 'PRIMARY'?錯(cuò)誤,說明有多個(gè)ROOT用戶紀(jì)錄在USER表中了.


`mysql> select host from user where user = 'root';`


查看一下host是否已經(jīng)有了`%`這個(gè)值,有了就可以了.


`mysql> select host,user from user where user='root';`


```

+-----------------------+------+

| host ?????????????????| user |

+-----------------------+------+

| % ????????????????????| root |

| 127.0.0.1 ????????????| root |

| ::1 ??????????????????| root |

| localhost.localdomain | root |

+-----------------------+------+

```


然后用ROOT用戶登錄更改用戶賬戶的遠(yuǎn)程連接權(quán)限時(shí).出現(xiàn)提示:ERROR 1044 (42000): Access denied for user ''@'localhost' to database 'mysql'。



## 5. ERROR 1044 (42000): Access denied for user ''@'localhost' to database 'mysql'


是因?yàn)閙ysql數(shù)據(jù)庫的user表里,存在用戶名為空的賬戶即匿名賬戶,導(dǎo)致登錄的時(shí)候是雖然用的是root,但實(shí)際是匿名登錄的,通過錯(cuò)誤提示里的''@'localhost'可以看出來,于是解決辦法見

先關(guān)閉MYSQL進(jìn)程..

然后


???`# mysqld_safe --skip-grant-table`


接著輸入


??```

???mysql -u root mysql

???mysql> delete from user where USER='';

???mysql> FLUSH PRIVILEGES;

??```


如果出現(xiàn)?Starting demo from ..?后..先輸入其它命令,再用mysql -u root mysql .它又會(huì)出現(xiàn)這個(gè)錯(cuò)誤了.

然后KILL掉MYSQL進(jìn)程,..重啟正常的進(jìn)程..

設(shè)置用戶遠(yuǎn)程主機(jī)連接權(quán)限


??```

????mysql> update user set host = '%' ?where user='tester';

????mysql> FLUSH PRIVILEGES;

??```



## 6.?設(shè)置用戶與庫的權(quán)限

但是在實(shí)際連接中,雖然可以連接,但是去沒有所在庫的權(quán)限,下面設(shè)置權(quán)限


??```

????mysql> grant all privileges on tester.* to tester@'%' identified by '1234';

????mysql> FLUSH PRIVILEGES;

??```


百分號(hào)兩邊要有單引號(hào),否則語法錯(cuò)誤

然后連接時(shí),竟然提示1045?錯(cuò)誤了,重設(shè)下密碼試下.

??```

????mysql> update mysql.user set password=password('XXX') where User="tester"

????mysql> flush privileges;

?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時(shí)請結(jié)合常識(shí)與多方信息審慎甄別。
平臺(tái)聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點(diǎn),簡書系信息發(fā)布平臺(tái),僅提供信息存儲(chǔ)服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

友情鏈接更多精彩內(nèi)容