Workbench連線不上阿里雲伺服器Ubuntu的Mysql解決方法(已測)
這兩天為了解決workbench連線不上阿里雲伺服器的問題,搞得頭大,網上搜到的教程都大同小異,但唯獨到我這就是行不通。不過好在最後終於解決了,記錄一下這個坑爹的過程。
使用的環境:
系統:
Ubuntu 18.04.2 LTS
Mysql:mysql Ver 14.14 Distrib 5.7.29,for Linux (x86_64) using EditLine wrapper
MySQL Workbench8.0CE
1. 無法連線到伺服器
一開始連線的時候是出現下面這種狀態。
遇到的坑之一
網上查到的大多數方法就是修改bind_address的值
先檢查以下mysql的埠狀態
netstat -anp|grep mysql
ps:如果顯示127.0.0.1:3306 則說明需要修改,若為: : :3306,則不用
因為我顯示的狀態是127.0.0.1:3306是這個值,所以得去修改。
網上查到的大多數修改配置檔案路徑均說是在**/etc/mysql/my.cnf**,但這是對舊版本而已,由於我裝的是最新版,所以開啟這個檔案之後發現裡面並沒有bind_address這個給值。後來查了一下才發現,新版的是在**/etc/mysql/mysql.conf.d/mysqld.cnf**。既然發現問題所在,那麼改過來就很方便了。找到下面這部分,然後註釋掉即可。
# 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
2. 修改mysql.user表的資訊
為了能讓root使用者遠端訪問資料庫,所以得去改一些資訊。
mysql -u root -p password mysql>use mysql Reading table information for completion of table and column names You can turn off this feature to get a quicker startup with -A Database changed mysql> select user,host from user; +------------------+----------------+ | user | host | +------------------+----------------+ | root | localhost | | debian-sys-maint | localhost | | mysql.session | localhost | | mysql.sys | localhost | +------------------+----------------+
上面的host表示使用者可以從那些地址訪問資料庫。由於是localhost,所以只能本地訪問。一共查到了兩種修改方法,一個是直接將原本root對應的host改成**%**,或者新添一個可以遠端訪問的使用者 。
方法一:
在進入mysql資料庫中的狀態下執行下面命令
update user set host='%' where user='root'
方法二:新添一個使用者:
grant all privileges on *.* to new_user@'%' identified by "password";
無論用了上面哪一種最後都得重新整理一下剛才的設定
mysql> flush privileges;
Query OK,0 rows affected (0.00 sec)
這兩個方式都試了,還是不行,出現說我們目前的ip不允許連線。
後來試了好多次發現, 遠端連線的使用者名稱不要用root。經過幾次重灌嘗試發現,設定root可以遠端連線,就一直失敗。
3. 關閉防火牆
# 先重啟一下資料庫
sudo service mysql restart
# 檢查MySQL埠狀況是否為 : : :3306
netstat -anp|grep mysql
# 關閉防火牆
sudo ufw disable
# 檢視防火牆狀態
sudo ufw status
4. 開放埠
阿里雲或者其他雲服務的使用者一定要注意去開防對應的埠,預設狀態mysql的埠為3306。
開啟阿里雲的控制檯,新增安全組規則
有一個安全組限制的設定,設定一下入方向可以允許3306埠再嘗試以下,瞬間就好了
阿里雲ECS MySQL無法遠端連線,如果你試了網上所有的教程還是無法連線請看下面
首先要檢查防火牆,這是最基本的,很多教程會提到,開啟3306埠
檢查阿里雲伺服器安全組,看一下是否開啟3306的出入站規則,這個真的好坑,不知道什麼時候阿里雲linux伺服器上還有這個東西了,印象中只在Windows server上有
通過工具連線有的時候還是連線不上,會提示跟SSL有關的,我是用IDEA和MySQL workbench連線,IDEA是要在連線的URL上面新增
useSSl=false
至於MySQL workbench我沒有找到如何連線,所以還可選的是伺服器禁用SSL
找到my.cnf檔案,一般在/etc/my.conf
向內容中新增skip_ssl命令關閉SSL
service mysqld restart
重啟mysql
設定所有IP可以訪問,修改localhost為127.0.0.1等就不說了,網上有很多文章可以參考,對安全組和SSL不熟悉的可以參考以上方法
連線資料庫時useSSL=false的作用
useSSL=false
MySQL在高版本需要指明是否進行SSL連線1.true 需要連線
2.false 不需要連線
5. 搞定
到此文章就介紹了,這樣基本上什麼都解決了。