grant remote access of MySQL database from any IP address

后端 未结 21 1287
伪装坚强ぢ
伪装坚强ぢ 2020-11-22 09:18

I am aware of this command:

GRANT ALL PRIVILEGES
ON database.*
TO \'user\'@\'yourremotehost\'
IDENTIFIED BY \'newpassword\';

But then it on

相关标签:
21条回答
  • 2020-11-22 09:40

    For anyone who fumbled with this, here is how I got to grant the privileges, hope it helps someone

    GRANT ALL ON yourdatabasename.* TO root@'%' IDENTIFIED BY
    'yourRootPassword';
    

    As noted % is a wildcard and this will allow any IP address to connect to your database. The assumption I make here is when you connect you'll have a user named root (which is the default though). Feed in the root password and you are good to go. Note that I have no single quotes (') around the user root.

    0 讨论(0)
  • 2020-11-22 09:41

    To remotely access database Mysql server 8:

    CREATE USER 'root'@'%' IDENTIFIED BY 'Pswword@123';
    
    GRANT ALL PRIVILEGES ON *.* TO 'root'@'%' WITH GRANT OPTION;
    
    FLUSH PRIVILEGES;
    
    0 讨论(0)
  • 2020-11-22 09:46

    To be able to connect with your user from any IP address, do the following:

    Allow mysql server to accept remote connections. For this open mysqld.conf file:

    sudo gedit /etc/mysql/mysql.conf.d/mysqld.cnf
    

    Search for the line starting with "bind-address" and set it's value to 0.0.0.0

    bind-address                    = 0.0.0.0
    

    and finally save the file.

    Note: If you’re running MySQL 8+, the bind-address directive will not be in the mysqld.cnf file by default. In this case, add the directive to the bottom of the file /etc/mysql/mysql.conf.d/mysqld.cnf.

    Now restart the mysql server, either with systemd or use the older service command. This depends on your operating system:

    sudo systemctl restart mysql # for ubuntu    
    sudo systemctl restart mysqld.service # for debian
    

    Finally, mysql server is now able to accept remote connections.

    Now we need to create a user and grant it permission, so we can be able to login with this user remotely.

    Connect to MySQL database as root, or any other user with root privilege.

    mysql -u root -p
    

    now create desired user in both localhost and '%' wildcard and grant permissions on all DB's as such .

    CREATE USER 'myuser'@'localhost' IDENTIFIED BY 'mypass';
    CREATE USER 'myuser'@'%' IDENTIFIED BY 'mypass';
    

    Then,

    GRANT ALL ON *.* TO 'myuser'@'localhost';
    GRANT ALL ON *.* TO 'myuser'@'%';
    

    And finally don't forget to flush privileges

    FLUSH PRIVILEGES;
    

    Note: If you’ve configured a firewall on your database server, you will also need to open port 3306 MySQL’s default port to allow traffic to MySQL.

    Hope this helps ;)

    0 讨论(0)
  • 2020-11-22 09:46

    If you want to grant remote access of your database from any IP address, run the mysql command and after that run the following command.

    GRANT ALL PRIVILEGES ON *.*
    TO 'root'@'%' 
    IDENTIFIED BY 'password' 
    WITH GRANT OPTION;
    
    0 讨论(0)
  • 2020-11-22 09:47

    Assuming that the above step is completed and MySql port 3306 is free to be accessed remotely; Don't forget to bind the public ip address in the mysql config file.

    For example on my ubuntu server:

    #nano /etc/mysql/my.cnf
    

    In the file, search for the [mysqld] section block and add the new bind address, in this example it is 192.168.0.116. It would look something like this

    ......    
    .....    
    # Instead of skip-networking the default is now to listen only on
    # localhost which is more compatible and is not less secure.
    
    bind-address        = 127.0.0.1    
    bind-address        = 192.168.0.116
    
    .....    
    ......
    

    you can remove th localhost(127.0.0.1) binding if you choose, but then you have to specifically give an IP address to access the server on the local machine.

    Then the last step is to restart the MySql server (on ubuntu)

    stop mysql
    
    start mysql
    

    or #/etc/init.d/mysql restart for other systems

    Now the MySQL database can be accessed remotely by:

    mysql -u username -h 192.168.0.116 -p
    
    0 讨论(0)
  • 2020-11-22 09:47

    Run the following:

    $ mysql -u root -p      
    mysql> GRANT ALL ON *.* to root@'ipaddress' IDENTIFIED BY 'mysql root password';     
    mysql> FLUSH PRIVILEGES;     
    mysql> exit
    

    Then attempt a connection from the IP address you specified:

    mysql -h address-of-remove-server -u root -p   
    

    You should be able to connect.

    0 讨论(0)
提交回复
热议问题