mysql 113錯誤的解決方法:1、關閉遠端機器的防火牆,或在防火牆允許3306埠號;2、設定資料庫允許遠端訪問,透過語句「grant privilegesCode on dbName.tableName to username@host identified by "password";」授權對應的host即可。
本教學操作環境:centos7系統、MySQL5.7版本、Dell G3電腦。
mysql 113 錯誤怎麼解決?
113 錯誤mysql_mysql添加,授權,刪除用戶以及連接資料庫Can't connect to MySQL server on '192.168.31.106' (113)錯誤排查...
centos7下面操作mysql添加,授權,刪除用戶
添加用戶
以root用戶登入資料庫,運行以下命令:
create user test identified by '123456789';
上面創建了用戶test,密碼是123456789。我們在mysql.user表裡面可以看到新增的使用者資訊
+------+----------------+-------------------------------------------+ | user | host | password | +------+----------------+-------------------------------------------+ | test | % | *CC67043C7BCFF5EEA5566BD9B1F3C74FD9A5CF5D | +------+----------------+-------------------------------------------+
授權
指令格式:grant privilegesCode on dbName.tableName to username@host identified by "password";
MariaDB [test]> grant all privileges on test.* to 'test'@'%' identified by '123456789'; Query OK,0 rows affected (0.00sec) MariaDB [test]>flush privileges; Query OK,0 rows affected (0.00 sec)
上面的語句將test表的所有操作權限都給了使用者test,密碼是123456789 同樣我們查看mysql.user的資訊
select user,host,password, Select_priv,Insert_priv, Update_priv ,Delete_priv from user where user='test';+------+----------------+-------------------------------------------+-------------+-------------+-------------+-------------+ | user | host | password | Select_priv | Insert_priv | Update_priv | Delete_priv | +------+----------------+-------------------------------------------+-------------+-------------+-------------+-------------+ | test | % | *CC67043C7BCFF5EEA5566BD9B1F3C74FD9A5CF5D | Y | Y | Y | Y | +------+----------------+-------------------------------------------+-------------+-------------+-------------+-------------+ 1 rows in set (0.00 sec)
也可以使用show grants指令查看授權的權限訊息
show grants for 'test';+--------------------------------------------------------------------------------------------------------------+ | Grants for test@% | +--------------------------------------------------------------------------------------------------------------+ | GRANT ALL PRIVILEGES ON *.* TO 'test'@'%' IDENTIFIED BY PASSWORD '*CC67043C7BCFF5EEA5566BD9B1F3C74FD9A5CF5D' | | GRANT ALL PRIVILEGES ON `test`.* TO 'test'@'%' | +--------------------------------------------------------------------------------------------------------------+ 2 rows in set (0.00 sec)
privilegesCode表示授予的權限類型,常用的有以下幾種類型[1]:
all privileges:所有權限。
select:讀取權限。
delete:刪除權限。
update:更新權限。
create:建立權限。
drop:刪除資料庫、資料表權限。
dbName.tableName表示授予權限的特定庫或表,常用的有以下幾個選項:
.:授予該資料庫伺服器所有資料庫的權限。
dbName.*:授予dbName資料庫所有資料表的權限。
dbName.dbTable:授予資料庫dbName中dbTable表的權限。
username@host表示授予的使用者以及允許該使用者登入的IP位址。其中Host有以下幾種類型:
localhost:只允許該使用者在本機登入,不能遠端登入。
%:允許在本機以外的任何一台機器遠端登入。
192.168.52.32:具體的IP表示只允許該使用者從特定IP登入。
password指定該使用者登入時的面。
flush privileges表示刷新權限變更。
修改密碼
update mysql.user set password = password('123') where user = 'test' and host = '%'; flush privileges;
刪除使用者
drop user test@'%';
drop user指令會刪除使用者以及對應的權限,執行指令後你會發現mysql.user表和mysql.db表的對應記錄都消失了。
總結
當我們部署程式碼的時候需要建立使用者並且賦予操作資料庫的權限,那我們可以使用命令:
grant privilegesCode on dbName.tableName to username@host identified by "password";
需要注意的是,當我們操作權限的時候,需要選擇host,也就是允許存取的位址例如
localhost:只允許該使用者在本地登錄,不能遠端登入。
%:允許在本機以外的任何一台機器遠端登入。
192.168.52.32:具體的IP表示只允許該使用者從特定IP登入。
同時當一切都準備好了之後,當我們在另一台機器訪問的時候,如果出現下面的錯誤:
# mysql -h192.168.31.106 -utest -p; Enter password: ERROR2003 (HY000): Can't connect to MySQL server on'192.168.31.106'(113)
錯誤排查
#1、確定遠端機器的防火牆關閉,或在防火牆允許3306埠號
2、確定資料庫允許遠端訪問,透過語句grant privilegesCode on dbName.tableName to username@host identified by "password";授權對應的host可以了。
推薦學習:《MySQL影片教學》
以上是mysql 113 錯誤怎麼解決的詳細內容。更多資訊請關注PHP中文網其他相關文章!