解决Ubuntu远程连接mysql连不上的问题
解決Ubuntu遠程連接mysql連不上的問題
Ubuntu安裝了mysql之后想開啟遠程,但是遠程怎么都登陸不上,老是提示錯誤,最終只用一個符號就搞定了,無語呀~~~
今天下午同事問我mysql數(shù)據(jù)庫怎么連接,我當(dāng)時比較忙,就直接給了個命令
GRANT ALL PRIVILEGES ON *.* TO 'root'@'%' IDENTIFIED BY '123' WITH GRANT OPTION;
過了以后他說這個不行,還是連不上,問我是不是要重啟mysql我說不用,然后想可能是因為權(quán)限沒刷新吧,就給了個刷新權(quán)限的命令
心想這次總可以了吧,過了一會QQ又響了,杯具的事情發(fā)生了.....
?
還是連不上,一直提示
?
Can't connect to MySQL server xxx.xxx.xxx.xxx (10061)
連不上? ?怎么可能那,命令都沒有問題呀,我趕快把手里的活搞定了,去看看.不看不知道一看嚇一跳,我去 ?我竟然忘了他們研發(fā)那邊用的都是Ubuntu的機子,唉 ?悲催呀....
以前用的都是redhat或者是centos的系統(tǒng),根本沒接觸過Ubuntu的系統(tǒng),更別說是上邊的服務(wù)了.當(dāng)時我還在想mysql不都一樣嘛,那還怎么不可能不行那(還抱僥幸心理~~)
搞了半天依然沒有結(jié)果,我去~~ ? ?這怎么搞那,還好我又絕招,有問題找"谷歌",不過我平時還是喜歡用"度娘",只有度娘不給力的時候我才用谷歌.
別說百度這次還真是給力,竟然搜到了.
果然是Ubuntu搗的鬼,竟然在mysql的配置文件中默認(rèn)綁定了本機. ?無奈呀~~~
果斷給注釋掉
編輯配置文件
/etc/mysql/my.cnf
注釋掉里邊的bind-address配置項
?
# Instead of skip-networking the default is now to listen only on # localhost which is more compatible and is not less secure. bind-address = 127.0.0.1如果出現(xiàn)此情況:
修改該文件:
# Instead of skip-networking the default is now to listen only on # localhost which is more compatible and is not less secure. bind-address = 127.0.0.1OK,重啟mysql
service mysql restart
Ubuntu重啟mysql直接用mysql就可以,不用mysqld耶~~
?
連接試試吧 ?如果還有問題那可能和RP有關(guān)了,哈哈 ? 玩笑話,有問題可以留言....
如果出現(xiàn)以下問題,修改用戶權(quán)限,或者是端口3306未開通
?
?
前情提要:事先聲明一下,這樣做是對安全有好處的。剛初始化好的MySQL是不能進行遠程登錄的。要實現(xiàn)登錄的話,強烈建議新建一個權(quán)限低一點的用戶再進行遠程登錄。直接使用root用戶遠程登錄有很大的風(fēng)險。分分鐘數(shù)據(jù)庫就有可能被黑客drop掉。首先,修改/etc/mysql/my.cnf文件。把bind-address = 127.0.0.1這句給注釋掉。解除地址綁定(或者是綁定一個你的固定地址。但寬帶上網(wǎng)地址都是隨機分配的,固定ip不可行)。然后,給一個用戶授權(quán)使他能夠遠程登錄。執(zhí)行下面兩句即可。grant all PRIVILEGES on *.* to user1@'%'identified by '123456' WITH GRANT OPTION; FLUSH PRIVILEGES;最后重啟一下mysql服務(wù)。service mysql restart。--------------------- 解決MySQL不能遠程登錄_用戶創(chuàng)建與授權(quán)_grant all privileges on MySQL的默認(rèn)配置root帳戶只能在本地登錄。遠程登錄會出現(xiàn)如下提示:1103 - host xxx.xxx.xxx.xx is not allowed to connec to this mysql server.或1045 - Access denied for user?'root'@'10.163.225.155' (using password: YES).原因是MySQL指定了某個賬戶只能在某個地方登錄服務(wù)器;例如:root@192.168.1.155?表示賬戶 root 只能在IP地址為 19.168.1.155 的機器上登錄MySQL服務(wù)器。解決辦法有兩種:1)修改root賬戶可在某地址登錄(地址可以是IP地址、機器名、域名、%表示任何地址)來解決問題;在本地運行Command Line Client,已root身份登錄執(zhí)行命令:mysql>use mysql;mysql>update user set host='%' where user='root';mysql>flush privileges; -- 刷新MySQL的系統(tǒng)權(quán)限相關(guān)表;到這里已經(jīng)完成了,如果還是登錄不了的話就嘗試重啟下MySQL;2)創(chuàng)建一個賬戶使其能遠程登錄;在本地運行Command Line Client,已root身份登錄執(zhí)行命令:?mysql> grant 權(quán)限1,權(quán)限2,…權(quán)限n on 數(shù)據(jù)庫名稱.表名稱 to 用戶名@用戶地址 identified by ‘連接口令’;權(quán)限1,權(quán)限2,…權(quán)限n代表select,insert,update,delete,create,drop,index,alter,grant,references,reload,shutdown,process,file等14個權(quán)限。 當(dāng)權(quán)限部分被 all privileges 或者 all 代替,表示賦予用戶全部權(quán)限。 當(dāng)數(shù)據(jù)庫名稱.表名稱被*.*代替,表示賦予用戶操作服務(wù)器上所有數(shù)據(jù)庫所有表的權(quán)限。 用戶地址可以是localhost,也可以是ip地址、機器名字、域名。也可以用’%'表示從任何地址連接。 ‘連接口令’不能為空,否則創(chuàng)建失敗。mysql>grant select,insert,update,delete,create,drop on vtdc.employee to joe@10.163.225.87 identified by ‘123′; 給來自10.163.225.87的用戶joe分配可對數(shù)據(jù)庫vtdc的employee表進行select,insert,update,delete,create,drop等操作的權(quán)限,并設(shè)定口令為123。如果沒有joe用戶就會自動創(chuàng)建他。mysql>grant all privileges on vtdc.* to joe@10.163.225.87 identified by ‘123′; 給來自10.163.225.87的用戶joe分配可對數(shù)據(jù)庫vtdc所有表進行所有操作的權(quán)限,并設(shè)定口令為123。mysql>grant all privileges on *.* to joe@10.163.225.87 identified by ‘123′; 給來自10.163.225.87的用戶joe分配可對所有數(shù)據(jù)庫的所有表進行所有操作的權(quán)限,并設(shè)定口令為123。mysql>grant all privileges on *.* to joe@localhost identified by ‘123′; 給本機用戶joe分配可對所有數(shù)據(jù)庫的所有表進行所有操作的權(quán)限,并設(shè)定口令為123。--------------------- 一般設(shè)置mysql用戶權(quán)限我們可以在客戶端中操作,很方便,不過有時候為了提升數(shù)據(jù)庫安全,會限制遠程給用戶授權(quán),這時候我們就需要登錄到服務(wù)器上面設(shè)置用戶權(quán)限。例如在linux上配置用戶權(quán)限,如下 1,先登錄,mysql -uroot -p 1 2,再設(shè)置 MySQL賦予用戶權(quán)限命令的簡單格式可概括為: grant 權(quán)限 on 數(shù)據(jù)庫對象 to 用戶grant select on dataterminaldb2.monitortemppersonevent to bigdata1@'%'; grant insert on dataterminaldb2.monitortemppersonevent to bigdata1@'%'; grant update on dataterminaldb2.monitortemppersonevent to bigdata1@'%'; grant delete on dataterminaldb2.monitortemppersonevent to bigdata1@'%'; 1 2 3 4 或grant select,insert,update,delete on dataterminaldb2.monitortemppersonevent to bigdata1@'%'; 1 3,刷新權(quán)限,讓權(quán)限生效flush privileges; 1 4,檢查配置結(jié)果 查看當(dāng)前用戶(自己)權(quán)限:show grants; 1 查看其他 MySQL 用戶權(quán)限:show grants for dba@localhost; 1 5,撤銷權(quán)限 revoke 跟 grant 的語法差不多,只需要把關(guān)鍵字 “to” 換成 “from” 即可:grant all on *.* to dba@localhost; revoke all on *.* from dba@localhost; 1 2---------------------
?
總結(jié)
以上是生活随笔為你收集整理的解决Ubuntu远程连接mysql连不上的问题的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 清华大学2019计算机录取分数线,清华大
- 下一篇: SQL按每5分钟或者10分钟分组统计数据