1. 程式人生 > >mysql新增專給特定IP訪問的使用者

mysql新增專給特定IP訪問的使用者

1 新建立同時授權使用者:

Sql程式碼 收藏程式碼
  1. [[email protected] ~]# mysql -root -p  
  2. Enter password:   
  3. Welcome to the MySQL monitor.  Commands endwith ; or \g.  
  4. Your MySQL connection id is 5386  
  5. Server version: 5.5.15-log MySQL Community Server (GPL)  
  6. Copyright (c) 2000, 2010, Oracle and/or its affiliates. All rights reserved.  
  7. Oracle is a registered trademark of Oracle Corporation and/or its  
  8. affiliates. Other names may be trademarks of their respective  
  9. owners.  
  10. Type 'help;'or'\h'for help. Type '\c'to clear the current input statement.  
  11. mysql>   
  12. mysql> grantselect,insert,update,deleteon my_test_db.* to [email protected]
     Identified 
    by"123456";  

上面的my_test_db是要授權訪問到的資料庫例項,biao是新使用者名稱,123456是密碼,localhost應該是資料庫允許被訪問的ip

2 建立使用者後,可以在mysql資料庫的user表看到新建立的使用者資訊:

Sql程式碼 收藏程式碼
  1. mysql> show database;  
  2. ERROR 2006 (HY000): MySQL server has gone away  
  3. Noconnection. Trying to reconnect...  
  4. Connection id:    15  
  5. Currentdatabase
    : karaoke  
  6. ERROR 1064 (42000): You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near 'database'at line 1  
  7. mysql> show databases;  
  8. +--------------------+
  9. Database           |  
  10. +--------------------+
  11. | information_schema |  
  12. | mysql              |  
  13. | performance_schema |  
  14. | test               |  
  15. +--------------------+
  16. rowsinset (0.00 sec)  
  17. mysql> use mysql  
  18. Database changed  
  19. mysql> show tables;  
  20. +---------------------------+
  21. | Tables_in_mysql           |  
  22. +---------------------------+
  23. | columns_priv              |  
  24. | db                        |  
  25. | event                     |  
  26. | func                      |  
  27. | general_log               |  
  28. | help_category             |  
  29. | help_keyword              |  
  30. | help_relation             |  
  31. | help_topic                |  
  32. | host                      |  
  33. | ndb_binlog_index          |  
  34. | plugin                    |  
  35. | proc                      |  
  36. | procs_priv                |  
  37. | proxies_priv              |  
  38. | servers                   |  
  39. | slow_log                  |  
  40. | tables_priv               |  
  41. | time_zone                 |  
  42. | time_zone_leap_second     |  
  43. | time_zone_name            |  
  44. | time_zone_transition      |  
  45. | time_zone_transition_type |  
  46. user                      |  
  47. +---------------------------+
  48. 24 rowsinset (0.00 sec)  
  49. mysql> select * fromuserwhereuser='karaoke' \G  
  50. *************************** 1. row ***************************  
  51.                  Host: localhost  
  52.                  User: biao  
  53.              Password: *E7E5651E6FD1A0960EC95E6DE3D971537515F66E  
  54.           Select_priv: Y  
  55.           Insert_priv: Y  
  56.           Update_priv: Y  
  57.           Delete_priv: Y  
  58.           Create_priv: N  
  59.             Drop_priv: N  
  60.           Reload_priv: N  
  61.         Shutdown_priv: N  
  62.          Process_priv: N  
  63.             File_priv: N  
  64.            Grant_priv: N  
  65.       References_priv: N  
  66.            Index_priv: N  
  67.            Alter_priv: N  
  68.          Show_db_priv: N  
  69.            Super_priv: N  
  70. Create_tmp_table_priv: N  
  71.      Lock_tables_priv: N  
  72.          Execute_priv: N  
  73.       Repl_slave_priv: N  
  74.      Repl_client_priv: N  
  75.      Create_view_priv: N  
  76.        Show_view_priv: N  
  77.   Create_routine_priv: N  
  78.    Alter_routine_priv: N  
  79.      Create_user_priv: N  
  80.              ssl_type:   
  81.            ssl_cipher:   
  82.           x509_issuer:   
  83.          x509_subject:   
  84.         max_questions: 0  
  85.           max_updates: 0  
  86.       max_connections: 0  
  87.  max_user_connections: 0  
  88. 1 row inset (0.00 sec)  

如果你的結果不面上面user='biao'那樣,你可以自己update這個表這段資訊,如我想讓這個使用者只給10.11.11.11的IP訪問,就update user set Host='10.11.11.11' where User='biao';

3 新增使用者授權後無法使用,如ip為10.11.11.11無法使用,這裡不用急,我是通過重啟資料庫來讓它生效的:

Sql程式碼 收藏程式碼
  1. #建立使用者後,外面機如如還沒法登陸,可以重啟資料庫服務:  
  2. [[email protected] ~]# sodu service mysql restart;  
  3. -bash: sodu: command not found  
  4. [[email protected] ~]# sudo service mysql restart;    
  5. Shutting down MySQL.....                                   [確定]  
  6. Starting MySQL....                                         [確定]  
  7. [[email protected] ~]# mysql -uroot -p  

這樣外面就可以訪問了,如這裡我指定了10.11.11.11這臺機來訪問,那麼在這臺機上使用如下訪問語句:

Java程式碼 收藏程式碼
  1. [root@xx11-11 ~]# hostname -i  
  2. 10.11.11.11
  3. [root@xx11-11 ~]# mysql -ukaraoke -pkaraoke  -h10.11.11.142
  4. Welcome to the MySQL monitor.  Commands end with ; or \g.  
  5. Your MySQL connection id is 17
  6. Server version: 5.5.15-log MySQL Community Server (GPL)  
  7. Type 'help;' or '\h'for help. Type '\c' to clear the buffer.  
  8. mysql>   

 這裡的10.11.11.142是我們剛才資料庫所在的IP。

更多參考:

配置外部訪問帳號密碼

本地登入mysql

Java程式碼  收藏程式碼
  1. mysql -uroot -p  

執行

Java程式碼  收藏程式碼
  1. grant all on *.* to [email protected]'client_ip' identified by 'password' with grant option;  

例子:所有區域網客戶端都可訪問

Java程式碼  收藏程式碼
  1. grant all on *.* to [email protected]'192.168.0.%' identified by 'root' with grant option;  

例子:為boyu資料庫設定使用者boyu

Java程式碼  收藏程式碼
  1. grant all on boyu.* to [email protected]'192.168.0.%' identified by 'p4ssword';  
 app_server_id為APP應用伺服器的IP

設定mysql外部能訪問

/etc/mysql/my.cnf

註釋到下面這行

Java程式碼  收藏程式碼
  1. bind-address = 127.0.0.1  

重啟mysql-server

Java程式碼  收藏程式碼
  1. sudo service mysql restart  

及參考:

如果在原始碼編譯未安裝成功的情況,用yum安裝是比較好的選擇,特別是對新手來說,是很好的選擇,安裝的過程很簡單,只要輸入:yum -y install mysql-server ,系統自動下載和安裝Mysql的, 
chkconfig --add mysqld 在服務清單中新增mysql服務 
service mysqld start 服務啟動 
mysqladmin -u root password 'newpassword' 更改密碼 
mysql -u root -p 
mysql> DROP DATABASE test; 刪除test資料庫 
mysql> DELETE FROM mysql.user WHERE user = ''; 刪除匿名帳戶 
mysql> FLUSH PRIVILEGES; 過載許可權