進階---------------------------------------------------------------------------------------
※ 新增一個使用者
insert into user (host,user,password) values ('%','your_account',password('your_password'));
※授與該使用者管理者權限,這樣你才能有辦法遠端處理 (因為 root 的遠端登入被停掉了)
GRANT ALL ON *.* TO 'your_account'@140.112.1.1 IDENTIFIED BY 'your_password' WITH GRANT OPTION;
不然剛剛那個帳號,只會是一般資料庫使用者的帳號,而且沒任何權限。
※讓剛剛的設定生效
FLUSH PRIVILEGES;
-------
※授與某位使用者為某個資料庫的管理者(非整個 MySQL 管理者)
sudo mysql -u root -p
mysql> use mysql;
mysql> create database your_db_name;
mysql> insert into user (host,user,password) values ('%','your_account',password('your_password'));
mysql> grant usage on *.* to your_account@localhost identified by 'your_password';
mysql> grant all privileges on your_db_name.* to your_account@localhost ;
mysql> FLUSH PRIVILEGES;
mysql> use mysql;
mysql> create database your_db_name;
mysql> insert into user (host,user,password) values ('%','your_account',password('your_password'));
mysql> grant usage on *.* to your_account@localhost identified by 'your_password';
mysql> grant all privileges on your_db_name.* to your_account@localhost ;
mysql> FLUSH PRIVILEGES;
----
接著遠端測試連接你的 MySQL ....
啥?連不到....你的 Firewall 有開嗎? Port: 3306
正確連上後你就可以看到兩個基本的資料表 mysql 跟 information_schema
- mysql> GRANT SELECT,INSERT,UPDATE,DELETE ON [db_name].* TO [username]@[remoteIP] identified by '[password]';
- mysql> FLUSH PRIVILEGES;
其中幾項參數名稱的說明如下:
- db_name:想要從遠端連接的資料庫名稱
- username:就是 username 嘛,若你是遇上這個問題,這個通常就是 root 囉!
- remoteIP:用戶或程式所在的遠端 IP,這邊可以使用 % 來開放某個網段,如:'192.168.%.%',注意兩個單引號是一定要加的喔!
- password:就密碼啦,最好也加上兩邊的單引號。
- http://www.ewdna.com/2011/09/mysqlmessage-from-server-host-xxx-is.html
- mysql> GRANT ALL ON db_name.table_name TO newUserName@remoteIP identified by 'password';
- mysql> FLUSH PRIVILEGES;
語法和前一個很像,db_name.table_name 可改成 db_name.* 甚至是 *.*,