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;
版權聲明:本文內容由互聯網用戶自發貢獻,該文觀點僅代表作者本人。本站僅提供信息存儲空間服務,不擁有所有權,不承擔相關法律責任。如發現本站有涉嫌抄襲侵權/違法違規的內容, 請發送郵件至 舉報,一經查實,本站將立刻刪除。