Skip to main content

How to enable remote admin access to MySQL database server?


Follow instructions below:

  1. Login to Plesk and make sure that Allow remote connections from any host option is enabled in Tools & Settings > Database Servers > Settings
  2. Edit my.cnf/my.ini file changing bind-address parameter to:
    bind-address = 0.0.0.0
    Also, make that skip-networking parameter is not defined.
    For Linux:
    /etc/mysql/my.cnf Debian/Ubuntu
    /etc/my.cnf CentOS/CloudLinux/RHEL
    For Windows:
    "%plesk_dir%\MySQL\my.ini" for Plesk databases(port 8306)
    "%plesk_dir%\Databases\MySQL\my.ini" for Clients databases(port 3306)
    After that, restart MySQL server.
  3. Note: For the access to client's MySQL server on Windows, use PHPMyAdmin: Plesk > Tools & Settings > Database Servers - MySQL DB Admin.
  4. Grant the access to remote IP address and login to MySQL. For example, if you want to allow access to database called database for user user with password password and remote IP address 203.0.113.2:
    GRANT ALL ON database.* TO user@'203.0.113.2' IDENTIFIED BY 'password';
    FLUSH PRIVILEGES;
    To create a user that has access to all databases, execute the following query:
    GRANT ALL PRIVILEGES ON *.* TO 'someuser'@'203.0.113.2' IDENTIFIED BY 'password' REQUIRE NONE WITH GRANT OPTION MAX_QUERIES_PER_HOUR 0 MAX_CONNECTIONS_PER_HOUR 0 MAX_UPDATES_PER_HOUR 0 MAX_USER_CONNECTIONS 0;
    FLUSH PRIVILEGES;
    Note: to allow connections from any IP address use ' ' character.
  5. Make sure that MySQL server is listening on the correct IP address.
    For Windows:
    netstat -anp tcp | findstr 8306
    TCP 0.0.0.0:8306 0.0.0.0:0 LISTENING
    netstat -anp tcp | findstr 3306
    TCP 0.0.0.0:3306 0.0.0.0:0 LISTENING
    For Linux:
    # netstat -anp | grep :3306
    tcp 0 0 203.0.113.10:3306 0.0.0.0:* LISTEN 13151/mysqld
  6. Login from the remote server:
    mysql -u someuser -ppassword -h example.com