真实的国产乱ⅩXXX66竹夫人,五月香六月婷婷激情综合,亚洲日本VA一区二区三区,亚洲精品一区二区三区麻豆

成都創(chuàng)新互聯(lián)網(wǎng)站制作重慶分公司

MySQL訪問受限的問題分析

今天幫同事看了一個(gè)MySQL的連接問題,蠻有意思,有兩個(gè)用戶,一個(gè)用戶連接正常,另外一個(gè)連接拋錯(cuò)。

普陀網(wǎng)站建設(shè)公司創(chuàng)新互聯(lián)公司,普陀網(wǎng)站設(shè)計(jì)制作,有大型網(wǎng)站制作公司豐富經(jīng)驗(yàn)。已為普陀成百上千家提供企業(yè)網(wǎng)站建設(shè)服務(wù)。企業(yè)網(wǎng)站搭建\成都外貿(mào)網(wǎng)站建設(shè)公司要多少錢,請(qǐng)找那個(gè)售后服務(wù)好的普陀做網(wǎng)站的公司定做!

開發(fā)同學(xué)提供的錯(cuò)誤日志如下:

{resin-33} java.net.SocketException
 {resin-33} MESSAGE: java.net.ConnectException: Connection timed out
。。。
 {resin-33} java.net.SocketException: java.net.ConnectException: Connection timed out
 {resin-33}    at com.mysql.jdbc.StandardSocketFactory.connect(StandardSocketFactory.java:156)
 {resin-33}    at com.mysql.jdbc.MysqlIO.(MysqlIO.java:284)
 {resin-33}    at com.mysql.jdbc.Connection.createNewIO(Connection.java:2706)
 {resin-33}    at com.mysql.jdbc.Connection.(Connection.java:1485)

可以看到連接數(shù)據(jù)庫的時(shí)候拋出了超時(shí)異常,但是他們使用telnet xxxx 3306端口是沒問題的,顯然問題的方向看起來在權(quán)限了。

當(dāng)然從error.log里面也看到了不少的警告信息,看起來他是在解析這個(gè)IP信息的時(shí)候出了問題。

[Warning] IP address '10.127.xxxx' could not be resolved: Temporary failure in name resolution
[Warning] IP address '10.127.xxxx' could not be resolved: Temporary failure in name resolutio

那么當(dāng)時(shí)的操作大體是怎么樣呢,因?yàn)檫@個(gè)操作已經(jīng)很長時(shí)間了,我們就簡單復(fù)現(xiàn)下這個(gè)問題,首先使用grants的方式創(chuàng)建用戶,當(dāng)然還是推薦create user的方式。

> grant usage on *.* to webadmin@'10.127.xxx.xxx' identified by 'testmysql.com';      
Query OK, 0 rows affected, 1 warning (0.00 sec)

這個(gè)時(shí)候查看show  grants的結(jié)果,是有usage的權(quán)限的,就跟oracle里面的connect角色差不多,也就是最起碼你能連接到數(shù)據(jù)庫。

> show grants for webadmin@'10.127.xxx.xxx';
+---------------------------------------------------+
| Grants for webadmin@10.127.xxx.xxx|
+---------------------------------------------------+
| GRANT USAGE ON *.* TO 'webadmin'@'10.127.xxx.xxx' |
+---------------------------------------------------+
1 row in set (0.00 sec)而后面的就是訪問權(quán)限了,比如開發(fā)同學(xué)不知道哪個(gè)權(quán)限合適,說你給我所有的權(quán)限吧,于是DBA說好,就寫下了*.*,然后問題就來了。

> GRANT ALL PRIVILEGES ON *.*TO 'webadmin'@'10.127.xxx.xxx';使用show grants查看權(quán)限,發(fā)現(xiàn)原來的usage權(quán)限竟然沒了。

> show grants for webadmin@'10.127.xxx.xxx';
+------------------------------------------------------------+
| Grants for webadmin@10.127.xxx.xxx|
+------------------------------------------------------------+
| GRANT ALL PRIVILEGES ON *.* TO 'webadmin'@'10.127.xxx.xxx' |
+------------------------------------------------------------+
1 row in set (0.00 sec)這權(quán)限去哪里了呢,我在MySQL 5.5, 5.7版本中都進(jìn)行了同樣的測(cè)試,發(fā)現(xiàn)如果使用*.*的權(quán)限方式,usage的權(quán)限都會(huì)消失,這個(gè)問題還是和一些配置有關(guān),暫時(shí)在bug列表中沒有找到匹配的描述。

其實(shí)一種修復(fù)就是賦予權(quán)限的時(shí)候,要制定數(shù)據(jù)庫名,比如數(shù)據(jù)庫test,那么就使用grants xxxxx on test.* to webadmin@'xxxx';

當(dāng)然能夠模擬出這個(gè)問題來,解決就容易的多了,開發(fā)同學(xué)給我提供了這個(gè)用戶的密碼,我做了簡單備份,開始重新配置權(quán)限,

create user ,grant [privilege] to test.* to webadmin@'xxxx';

但是很快又收到了開發(fā)同學(xué)的信息說,程序的錯(cuò)誤變了,現(xiàn)在是這個(gè)錯(cuò)誤。

{main} Attempted reconnect 3 times. Giving up.
 {main} at com.mysql.jdbc.Connection.createNewIO(Connection.java:2781)
 {main} at com.mysql.jdbc.Connection.(Connection.java:1485)
 {main} at com.mysql.jdbc.NonRegisteringDriver.connect(NonRegisteringDriver.java:266)
 {main} at org.apache.commons.dbcp.DriverConnectionFactory.createConnection(DriverConnectionFactory.java:38)

 這個(gè)錯(cuò)誤讓我看起來有些迷茫,我說實(shí)在不行就重啟大法吧,但是重啟之后依然不行,最后又開始定位,發(fā)現(xiàn)可能和密碼有關(guān),于是我按照備份的加密串重新配置權(quán)限,就沒問題了,說明開發(fā)同學(xué)提供給我的密碼是有問題的,而幸好有了備份,這個(gè)問題才能在這種摸著石頭過河的情況繼續(xù)前進(jìn)。

個(gè)人微信公眾號(hào),歡迎掃碼關(guān)注

MySQL訪問受限的問題分析


文章標(biāo)題:MySQL訪問受限的問題分析
網(wǎng)站鏈接:http://weahome.cn/article/jjcehh.html

其他資訊

在線咨詢

微信咨詢

電話咨詢

028-86922220(工作日)

18980820575(7×24)

提交需求

返回頂部