91超碰碰碰碰久久久久久综合_超碰av人澡人澡人澡人澡人掠_国产黄大片在线观看画质优化_txt小说免费全本

溫馨提示×

溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊×
其他方式登錄
點擊 登錄注冊 即表示同意《億速云用戶服務條款》

MySQL訪問受限的問題分析

發布時間:2020-08-09 17:33:00 來源:ITPUB博客 閱讀:176 作者:jeanron100 欄目:MySQL數據庫

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

開發同學提供的錯誤日志如下:

{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)

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


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

[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

那么當時的操作大體是怎么樣呢,因為這個操作已經很長時間了,我們就簡單復現下這個問題,首先使用grants的方式創建用戶,當然還是推薦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)

這個時候查看show  grants的結果,是有usage的權限的,就跟oracle里面的connect角色差不多,也就是最起碼你能連接到數據庫。

> 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)而后面的就是訪問權限了,比如開發同學不知道哪個權限合適,說你給我所有的權限吧,于是DBA說好,就寫下了*.*,然后問題就來了。

> GRANT ALL PRIVILEGES ON *.* TO 'webadmin'@'10.127.xxx.xxx';使用show grants查看權限,發現原來的usage權限竟然沒了。

> 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)這權限去哪里了呢,我在MySQL 5.5, 5.7版本中都進行了同樣的測試,發現如果使用*.*的權限方式,usage的權限都會消失,這個問題還是和一些配置有關,暫時在bug列表中沒有找到匹配的描述。

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

當然能夠模擬出這個問題來,解決就容易的多了,開發同學給我提供了這個用戶的密碼,我做了簡單備份,開始重新配置權限,

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


但是很快又收到了開發同學的信息說,程序的錯誤變了,現在是這個錯誤。

{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)

 這個錯誤讓我看起來有些迷茫,我說實在不行就重啟大法吧,但是重啟之后依然不行,最后又開始定位,發現可能和密碼有關,于是我按照備份的加密串重新配置權限,就沒問題了,說明開發同學提供給我的密碼是有問題的,而幸好有了備份,這個問題才能在這種摸著石頭過河的情況繼續前進。


個人微信公眾號,歡迎掃碼關注

MySQL訪問受限的問題分析


向AI問一下細節

免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。

AI

永顺县| 中方县| 扶绥县| 黄平县| 山西省| 平舆县| 兰溪市| 泊头市| 台南县| 堆龙德庆县| 平顺县| 佛山市| 来安县| 屏东县| 武宁县| 革吉县| 永安市| 那曲县| 长治县| 开江县| 安泽县| 姜堰市| 株洲县| 武宣县| 丹巴县| 松潘县| 九寨沟县| 霍州市| 绍兴市| 黎川县| 云梦县| 长沙县| 丽水市| 延寿县| 临汾市| 盐亭县| 台前县| 江都市| 怀来县| 赤城县| 黄骅市|