How to grant remote access to MySQL for a whole subnet?

前端 未结 7 1705
不知归路
不知归路 2020-12-02 07:50

I can easily grant access to one IP using this code:

$ mysql -u root -p
Enter password:    
mysql> use mysql    
mysql> GRANT ALL ON *.* to root@\'192.         


        
相关标签:
7条回答
  • 2020-12-02 08:17

    You would just use '%' as your wildcard like this:

    GRANT ALL ON *.* to root@'192.168.1.%' IDENTIFIED BY 'your-root-password';
    
    0 讨论(0)
  • 2020-12-02 08:21

    It looks like you can also use a netmask, e.g.

    GRANT ... TO 'user'@'192.168.0.0/255.255.255.0' IDENTIFIED BY ...
    
    0 讨论(0)
  • 2020-12-02 08:23

    Just a note of a peculiarity I faced:
    Consider:

    db server:  192.168.0.101
    web server: 192.168.0.102
    

    If you have a user defined in mysql.user as 'user'@'192.168.0.102' with password1 and another 'user'@'192.168.0.%' with password2,

    then,

    if you try to connect to the db server from the web server as 'user' with password2,

    it will result in an 'Access denied' error because the single IP 'user'@'192.168.0.102' authentication is used over the wildcard 'user'@'192.168.0.%' authentication.

    0 讨论(0)
  • 2020-12-02 08:24

    EDIT: Consider looking at and upvoting Malvineous's answer on this page. Netmasks are a much more elegant solution.


    Simply use a percent sign as a wildcard in the IP address.

    From http://dev.mysql.com/doc/refman/5.1/en/grant.html

    You can specify wildcards in the host name. For example, user_name@'%.example.com' applies to user_name for any host in the example.com domain, and user_name@'192.168.1.%' applies to user_name for any host in the 192.168.1 class C subnet.

    0 讨论(0)
  • 2020-12-02 08:31
    mysql> GRANT ALL ON *.* to root@'192.168.1.%' IDENTIFIED BY 'your-root-password';  
    

    The wildcard character is a "%" instead of an "*"

    0 讨论(0)
  • 2020-12-02 08:32

    after you connect server and you want to connect on your host, you should do the steps below:

    1. write mysql to open mysql
    2. write GRANT ALL ON . to root@'write_your_ip_addres' IDENTIFIED BY 'write_password_to_connect';
    3. press control and X to quit from mysql
    4. write nano /etc/mysql/my.cnf
    5. write # before bind-address = 127.0.0.1 in my.cnf folder
    6. #bind-address = 127.0.0.1
    7. save my.cnf folder with control + X
    8. write service mysql restart
    9. you could connect via navicat on your host
    0 讨论(0)
提交回复
热议问题