MySQL是一款使用 SQL 語言進行增刪改查操作的關係型數據庫,MySQL 數據庫支持跨平台、性能卓越,可以和 PHP、Java 等 Web 開發語言完美配合而且體積小、速度快,最重要的是MySQL開源免費,可以大大降低運營成本。本次在衡陽的智能製造服務就是採用的MySQL數據庫,並搭配上了自主研發的「霧小腦」。「霧小腦」搭載的是Windows Server系統並安裝了Mysql數據庫

今天在調試程序的時候通過本地電腦鏈接「霧小腦」上的數據庫時遇到提示:Host 『XXX』 is not allowed to connect to this MySQL server,當然服務器上是可以直接通過localhost訪問到數據庫的。這裡我們可以使用Navicat來管理MySQL數據庫,它可以以圖形用戶界面連接數據庫幫助用戶方便、簡單、快速的創建、管理和訪問數據庫資源。

原因分析
一般出現這種現象有兩個原因,一個是當前用戶直接被mysql服務器拒絕訪問,另外一個則是3306端口被防火牆禁掉導致無法連接到該端口。

允許防火牆進出
在系統中找到「控制面板→系統和安全→Windows防火牆」,點擊左側菜單中的「高級設置」進入【高級安全 Windows防火牆】界面。鼠標右鍵左側的「入站規則」接着點擊右側的「新建規則」,在【新建入站規則嚮導】界面中的在「規則類型」選擇「端口」,點擊下一步選擇「TCP」,點選「特定本地端口」後填入端口號3306。點擊「下一步」繼續點選「允許連接」後直接「下一步」,根據用戶的實際情況勾選域、專用或共用等選項。點擊「下一步」繼續並為該規則命名,設置完成之後其他計算機就可以訪問該系統的3306端口了。

MySQL服務允許
在安裝mysql的機器上運行命令:mysql -u root -p,輸入密碼之後就可以登錄MySQL服務器。然後在mysql中執行命令:use mysql進入mysql數據庫,接着繼續執行命令: select host from user where user = 『root』;可以查看當前root用戶允許被訪問的。如果顯示host是localhost就說明該服務只允許被本地訪問,那麼這時候我們就需要來修改允許訪問的權限。該指令的意思是將數據庫的所有權限授權給username這個用戶,允許username在 xxx.xxx.xx.x 這個IP通過password密碼遠程登陸MySQL服務器。

參數說明
all PRIVILEGES 表示賦予所有的權限給指定用戶,這裡也可以替換為賦予某一具體的權限,權限間用「,」半角逗號分隔。*.*指任意數據庫中的任意表,也可以指定數據庫和表授權:「數據庫名.表名」。username則是要授權的用戶,該用戶可以是已存在的用戶,也可以是不存在的用戶(不存在會自動新建,password 為username用戶的密碼)。xxx.xxx.xx.x 是指定允許遠程連接的主機IP地址,如果希望所有主機訪問可以將其設置為「%」。

總結:
最後記得執行命令:flush privileges;來刷新權限使其生效,或者通過命令 service mysql restart 重啟mysql數據庫也行。以上內容是小編給大家分享的【MySQL實戰003:Windows允許mysql遠程連接】。希望對大家有所幫助,如果大家有任何疑問請給我留言,小編會及時回復大家的。為了方便學習,下面附上本文用到的源碼:
>mysql -u root -p
>Enter password:
Welcome to the MySQL monitor. Commands end with ; or g.
Your MySQL connection id is 6041
Server version: 8.0.19 MySQL Community Server - GPL
Type 'help;' or 'h' for help. Type 'c' to clear the current input statement.
mysql> grant all PRIVILEGES on *.* to 'username'@'xxx.xxx.xx.x' identified by 'password' WITH GRANT OPTION;
mysql>flush privileges;
原創文章,作者:投稿專員,如若轉載,請註明出處:https://www.506064.com/zh-hk/n/284311.html