MySQL因為安全性root帳號,預設只允許localhost連線,想要遠端裝置連線本地端的資料庫,需要設置帳號權限修改為所有host均可訪問,如下指令。
update user set host = '%' where user = 'root';
以上是直接修改root權限的做法,還有第二種比較好的做法是,新增一個使用者,給予hoot均可訪問的權限'%'
,或使指定只能訪問指定某資料庫權限。
MySQL創建一個新用戶
先以 root 帳號進入 MySQL 的 Console:
> mysql -u root -p
建立使用者名稱及密碼:
mysql> CREATE USER admin IDENTIFIED BY 'password';
admin
表示使用者帳號為admin
,若後面有加入'admin'@'localhost'
表示只能localhost本端連入,所以我們需要所有hoot均可訪問權限的設置'%'
,這邊只需要填入帳號名稱即可'admin'
給定使用者存取權限
mysql> GRANT ALL PRIVILEGES ON *.* TO 'admin';
*.*
為所有使用權限,也可針對資料庫database_name.*
如下:只能訪問database_name
這個資料庫。
mysql> GRANT ALL PRIVILEGES ON database_name.* TO 'admin';
重新載入使用者權限設定
mysql> FLUSH PRIVILEGES;
通知伺服器重新載入權限設定,重新啟動MySQL,測試剛才建立的帳號使用遠端ip連線測試,登入就能成功存取資料庫了。
延伸筆記:
grant all privileges on *.* to root@"%" identified by "password" with grant option;
*.*
:第一個 *
代表數據庫名;第二個*
代表表名。將所有數據庫裡的所有表都授權給用戶。
若授權某數據庫或數據庫下某張表,則把 * 替換成你所需的數據庫名和表明即可。
root:授予root賬號。 “%”:表示授權的用戶IP可以指定,這裡代表任意的IP地址都能訪問MySQL數據庫。
password:分配賬號對應的密碼,這裡密碼自己替換成你的 root 帳號密碼。