locked
Unable to Connect to Any of The Specified MySQL Hosts Error RRS feed

  • Question

  • I have an application that requires my users to connect to an online MySQL database through "remote access" from ANY IP address (the IP address from their own internet network) so that it confirms they are in the database prior to accessing the software.

    I have tried to run command lines in my Linux terminal to allow ALL users to connect remotely from any ip address using the following command:

       
    GRANT ALL ON database_name.* TO root@'%' IDENTIFIED BY 'user_password';



    I have configured my MySQL database server configuration file to enable proper remote connection (I believe).

    My "MySQL database server configuration file" located in /etc/mysql/mysql.conf.d/mysqld.cnf looks like the following below:

    #
        # The MySQL database server configuration file.
        #
        # You can copy this to one of:
        # - "/etc/mysql/my.cnf" to set global options,
        # - "~/.my.cnf" to set user-specific options.
        # 
        # One can use all long options that the program supports.
        # Run program with --help to get a list of available options and with
        # --print-defaults to see which it would actually understand and use.
        #
        # For explanations see
        # http://dev.mysql.com/doc/mysql/en/server-system-variables.html
        
        # This will be passed to all mysql clients
        # It has been reported that passwords should be enclosed with ticks/quotes
        # escpecially if they contain "#" chars...
        # Remember to edit /etc/mysql/debian.cnf when changing the socket location.
        
        # Here is entries for some specific programs
        # The following values assume you have at least 32M ram
        
        [mysqld_safe]
        socket		= /var/run/mysqld/mysqld.sock
        nice		= 0
        
        [mysqld]
        #
        # * Basic Settings
        #
        user		= mysql
        pid-file	= /var/run/mysqld/mysqld.pid
        socket		= /var/run/mysqld/mysqld.sock
        port		= 3306
        basedir		= /usr
        datadir		= /var/lib/mysql
        tmpdir		= /tmp
        lc-messages-dir	= /usr/share/mysql
        skip-external-locking
        #
        # Instead of skip-networking the default is now to listen only on
        # localhost which is more compatible and is not less secure.
        bind-address		= 0.0.0.0
        #require_secure_transport = on
        #
        # * Fine Tuning
        #
        key_buffer_size		= 16M
        max_allowed_packet	= 16M
        thread_stack		= 192K
        thread_cache_size       = 8
        # This replaces the startup script and checks MyISAM tables if needed
        # the first time they are touched
        myisam-recover-options  = BACKUP
        #max_connections        = 100
        #table_open_cache       = 64
        #thread_concurrency     = 10
        #
        # * Query Cache Configuration
        #
        query_cache_limit	= 1M
        query_cache_size        = 16M
        #
        # * Logging and Replication
        #
        # Both location gets rotated by the cronjob.
        # Be aware that this log type is a performance killer.
        # As of 5.1 you can enable the log at runtime!
        #general_log_file        = /var/log/mysql/mysql.log
        #general_log             = 1
        #
        # Error log - should be very few entries.
        #
        log_error = /var/log/mysql/error.log
        #
        # Here you can see queries with especially long duration
        #slow_query_log		= 1
        #slow_query_log_file	= /var/log/mysql/mysql-slow.log
        #long_query_time = 2
        #log-queries-not-using-indexes
        #
        # The following can be used as easy to replay backup logs or for replication.
        # note: if you are setting up a replication slave, see README.Debian about
        #       other settings you may need to change.
        #server-id		= 1
        #log_bin			= /var/log/mysql/mysql-bin.log
        expire_logs_days	= 10
        max_binlog_size   = 100M
        #binlog_do_db		= include_database_name
        #binlog_ignore_db	= include_database_name
        #
        # * InnoDB
        #
        # InnoDB is enabled by default with a 10MB datafile in /var/lib/mysql/.
        # Read the manual for more InnoDB related options. There are many!
        #
        # * Security Features
        #
        # Read the manual, too, if you want chroot!
        # chroot = /var/lib/mysql/
        #
        # For generating SSL certificates I recommend the OpenSSL GUI "tinyca".
        #
        # ssl-ca=/etc/mysql/cacert.pem
        # ssl-cert=/etc/mysql/server-cert.pem
        # ssl-key=/etc/mysql/server-key.pem



    I have also tried to unblock the FireWall to enable tcp connection using the following command line:

       
    sudo ufw allow 3306/tcp



    My connection string from my desktop application looks like this:

    MysqlConn.ConnectionString = "server=MyServerIPaddress;Port=3306;database=MyDatabaseName;Uid=root;Pwd=MyPassword;Connect Timeout=30;SslMode=none;"



    My users still get the "*Unable to connect to any of the specified mysql hosts.*" error message.
    Any support is appreciated.

    Thursday, June 11, 2020 6:53 PM

Answers

  • I'd try asking for help over here.

    https://forums.mysql.com/

     

     



    Regards, Dave Patrick ....
    Microsoft Certified Professional
    Microsoft MVP [Windows Server] Datacenter Management

    Disclaimer: This posting is provided "AS IS" with no warranties or guarantees, and confers no rights.

    Thursday, June 11, 2020 7:02 PM
  • Hello,

    as far as I know MySQL, you should not connect a root user from outside. If you want root connection, create a new user and grant it to all privileges. The outside connections should use this user for roor access.

    If you cannot connect from outside with this user, then there is a problem with the Firewall. The MySQL Port should be open for all connections from outside. For example I found out before, that the port 3306 must be set in the firewall of Windows.

    Regards, Guido

    By the way: the mysql forum is not dead.

    Monday, June 15, 2020 8:35 AM

All replies

  • I'd try asking for help over here.

    https://forums.mysql.com/

     

     



    Regards, Dave Patrick ....
    Microsoft Certified Professional
    Microsoft MVP [Windows Server] Datacenter Management

    Disclaimer: This posting is provided "AS IS" with no warranties or guarantees, and confers no rights.

    Thursday, June 11, 2020 7:02 PM
  • I'd try asking for help over here.

    https://forums.mysql.com/

     

     



    Regards, Dave Patrick ....
    Microsoft Certified Professional
    Microsoft MVP [Windows Server] Datacenter Management

    Disclaimer: This posting is provided "AS IS" with no warranties or guarantees, and confers no rights.

    Actually the MySQL forum website SUCKS. They never respond there. That site is dead. 
    Thursday, June 11, 2020 7:06 PM
  • It may be but unfortunately mysql is not a microsoft product, hence they don't have a mysql forum here. You can try asking here but I suspect at the mention of mysql they'll toss it.

    https://social.msdn.microsoft.com/Forums/en-US/home?category=vslanguages

     

     



    Regards, Dave Patrick ....
    Microsoft Certified Professional
    Microsoft MVP [Windows Server] Datacenter Management

    Disclaimer: This posting is provided "AS IS" with no warranties or guarantees, and confers no rights.

    Thursday, June 11, 2020 7:09 PM
  • I agree, BTW. I could not even figure out how to post there.

    I did post a few bugs in the bugs report and someone even sent me email, but no followup. Perhaps I should try to follow up myself, though.


    For every expert, there is an equal and opposite expert. - Becker's Law


    My blog


    My TechNet articles

    Thursday, June 11, 2020 7:11 PM
  • I would rather suggest to try in T-SQL forum here, but no guarantee you'll get a reply.

    For every expert, there is an equal and opposite expert. - Becker's Law


    My blog


    My TechNet articles

    Thursday, June 11, 2020 7:20 PM
  • Hello,

    as far as I know MySQL, you should not connect a root user from outside. If you want root connection, create a new user and grant it to all privileges. The outside connections should use this user for roor access.

    If you cannot connect from outside with this user, then there is a problem with the Firewall. The MySQL Port should be open for all connections from outside. For example I found out before, that the port 3306 must be set in the firewall of Windows.

    Regards, Guido

    By the way: the mysql forum is not dead.

    Monday, June 15, 2020 8:35 AM