2012-06-27 3 views
0

У меня есть сервер ubuntu с установленной mysql, в какой-то момент я увидел, что PHP-код, запущенный на сервере, может обращаться к mysql, но я не могу получить доступ к mysql удаленно, для другого сервера или последовательного pro.Доступ к базе данных удаленно

$ mysql -u root -p 
mysql> GRANT ALL on *.* TO 'thomas'@'%'; 
mysql> exit 
$ mysql -u thomas -p 
mysql> show grants; 
+------------------------------------------------------------------------------------------------------------------------------------------+ 
| Grants for [email protected]                            | 
+------------------------------------------------------------------------------------------------------------------------------------------+ 
| GRANT ALL PRIVILEGES ON *.* TO 'thomas'@'localhost' IDENTIFIED BY PASSWORD '[ENCRYPTEDPASSWORD]' WITH GRANT OPTION | 
+------------------------------------------------------------------------------------------------------------------------------------------+ 
1 row in set (0.00 sec) 
mysql> exit 
$ mysql -u thomas -p -h [SERVERIP] 
ERROR 1045 (28000): Access denied for user 'thomas'@'[SERVERNAME]' (using password: YES) 

Update:

Я wen't в и сняло все пользователи, где сделаны (некоторые не пароли) я собирался на mysql.user стол и с помощью команды drop user.

CREATE USER 'thomas'@'localhost' IDENTIFIED BY '[PASSWORD]'; 
GRANT ALL PRIVILEGES ON *.* TO 'thomas'@'localhost' IDENTIFIED BY '[PASSWORD]'; 
GRANT ALL PRIVILEGES ON *.* TO 'thomas'@'[SERVERIP]' IDENTIFIED BY '[PASSWORD]'; 
GRANT ALL PRIVILEGES ON *.* TO 'thomas'@'%' IDENTIFIED BY '[PASSWORD]'; 

теперь таблица выглядит следующим образом:

+--------------+------------------+ 
| Host   | User    | 
+--------------+------------------+ 
| localhost | root    | 
| localhost | phpmyadmin  | 
| 127.0.0.1 | root    | 
| ::1   | root    | 
| localhost | debian-sys-maint | 
| localhost | thomas   | 
| [SERVERIP] | thomas   | 
| %   | thomas   | 
+--------------+------------------+ 
+0

проверить этот ответ: http://stackoverflow.com/a/11225588/1007273 – hovanessyan

+0

Где вопрос? –

+0

Скорее всего, mysqld не прослушивает правильный интерфейс Ethernet ... – hovanessyan

ответ

2

Ну, у вас есть

GRANT ALL PRIVILEGES ON *.* TO 'thomas'@'localhost' 

но вы не на localhost. Вы могли бы хотеть попробовать

GRANT ALL PRIVILEGES ON *.* TO 'thomas'@'%' 

Ofcourse вы должны добавить IDENTIFIED BY 'password' если вы так желаете

+0

Мне не хватало 'ПРИВИЛЕГИИ', но оно все еще не работает. Независимо от того, что я делаю, какой пользователь я делаю это под 'show grant,' не возвращается ни с чем, кроме 'localhost'. – ThomasReggi

+0

Я вижу, что 'mysql.user' изменен, но ничего в' show grant; '. – ThomasReggi

+0

AFAIK 'SHOW GRANTS' покажет только ** применимые ** гранты - поэтому, если вы вошли в систему с локального хоста, вы не увидите глобальных прав. –