Server Fault is a question and answer site for system and network administrators. Join them; it only takes a minute:

Sign up
Here's how it works:
  1. Anybody can ask a question
  2. Anybody can answer
  3. The best answers are voted up and rise to the top

I googled this and found the answers but even after following all the steps that should have worked I still cannot connect to my SQL server from another server.

this is the my.cnf, the only change i did here was ADD the bind parameter as it was missing from the start

query-cache-type = 1
query-cache-size = 8M

# Disabling symbolic-links is recommended to prevent assorted security risks
symbolic-links=0 # the IP of the server that mySQL is located on as well as this my.cnf

# To enable the InnoDB Plugin, uncomment the 2 next lines

# To enable InnoDB-related INFORMATION_SCHEMA tables
# Join the following options to above directive

set-variable = innodb_buffer_pool_size=2M
set-variable = innodb_additional_mem_pool_size=500K
set-variable = innodb_log_buffer_size=500K
set-variable = innodb_thread_concurrency=2

set-variable = innodb_buffer_pool_size=2M
set-variable = innodb_additional_mem_pool_size=500K
set-variable = innodb_log_buffer_size=500K
set-variable = innodb_thread_concurrency=2

Then I did a reboot of mysql server with

/etc/init.d/mysqld restart

then I logged into the mysql server as root

then I did a grant all privileges

mysql> GRANT ALL PRIVILEGES ON *.* TO user@50.xx.xx.xx IDENTIFIED BY "pass";

To my understanding user and pass are the login details for the existing database on the server right? Or do they mean something else? Also the ip of 50.xx.xx.xx is the ip of the remote server that is going to try and make the connection.

Am I wrong in this statement?

after which i flushed all privileges


then in my PHP scripts on the remote server I just filled in the details for the sql database I want to connect to.

$database = demo_;
$dbpass = 'user';
$dbpass = 'pass';

I used the same user and pass that i specified in the GRANT ALL PRIVILEGES just to make sure things matched.

but in the end i still get this error

SQLSTATE[HY000] [1130] Host '' is not allowed to connect to this MySQL server

any ideas?

share|improve this question
Try domain name instead of IP address in your GRANT command. – LazyOne Jul 10 '11 at 17:37
didn't seem to work, at this point i think its something to do with the the IPs or domains i'm using because of the error, i would get Access Denied if the login information was wrong right? – Eli Jul 10 '11 at 17:48
Yes, I think the same. Try removing any IP/domain name -- grant it for access from anywhere: 'user'@'%'. If works -- play around (check the logs etc). depending on your setup/circumstances you may consider restricting access from specific IP not in MySQL but at firewall. – LazyOne Jul 10 '11 at 17:55
Also, try adding skip-name-resolve in your config (so only IPs are used and not domain names):… – LazyOne Jul 10 '11 at 18:02
up vote 1 down vote accepted

Assuming the permissions are as you say, it should work - however its worth noting that GRANT provides an interface to the underlying access control tables in MySQL - and for a long time it was standard practice to write to these directly; have you checked what is in the mysql.user tables?

Have you checked that the client address seen by the server is the same as you specified in the grant? i.e. 50.xx.xx.xx is the only address for

Also, there is note in the mysql manual regarding this error:

On Linux, another reason that this error might occur is that you are using a binary MySQL version that is compiled with a different version of the glibc library than the one you are using

share|improve this answer

Your Answer


By posting your answer, you agree to the privacy policy and terms of service.

Not the answer you're looking for? Browse other questions tagged or ask your own question.