Во-первых, надо проверить что всё нормально с Firewall-ом.
в файле /etc/mysql/my.cnf, по умолчанию, разрешены подключение только к локальному хосту:
# 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
прописываем адрес виртуальной машины под которой запущен MySQL:
bind-address = 192.168.40.130
либо
bind-address = 0.0.0.0
чтобы MySQL слушал на всех сетевых интерфейсах (eth0, lo, …), перезапускаем mysql:
# /etc/init.d/mysql restart
замэпливаем порты на виртуальной машине:
теперь, если мы коннектимся через telnet с удаленной машины, то получается вот такая штука:
$ telnet 192.168.1.2 3306
Trying 192.168.1.2... Connected to 192.168.1.2. Escape character is '^]'. DHost '192.168.1.3' is not allowed to connect to this MySQL serverConnection closed by foreign host.
а если коннектимся через mysql, то получается вот что:
$ mysql -h 192.168.1.2 -u webadmin -p
Enter password: ERROR 1130 (HY000): Host '192.168.1.3' is not allowed to connect to this MySQL server
создаём юзера через которого будем коннектится и даем ему права:
$ mysql -u root -p
CREATE USER 'newusername'@'%' IDENTIFIED BY '***'; GRANT SELECT ON `somedb` . * TO 'newusername'@'%';
можно также изменить существующего юзера:
$ mysql -u root -p mysql
mysql> update db set Host='202.54.10.20' where Db='webdb'; mysql> update user set Host='202.54.10.20' where user='webadmin';
интересно, что у одного и того же MySQL юзера могут быть разные пароли, в зависимости от того, с какого хоста он коннектится, поэтому когда делаем GRANT нужно добавлять IDENTIFIED BY ‘***’, если делаем без него, то получается так:
GRANT SELECT, INSERT, UPDATE ON test1.* TO test1@’%’;
SHOW GRANTS FOR ‘test1’@’%’;
+———————————————————-+
| Grants for test1@% |
+———————————————————-+
| GRANT USAGE ON *.* TO ‘test1’@’%’ |
| GRANT SELECT, INSERT, UPDATE ON `test1`.* TO ‘test1’@’%’ |
+———————————————————-+
2 rows in set (0.00 sec)
тогда нужно ставить пароль для ‘%’:
SET PASSWORD FOR ‘test1’@’%’ = PASSWORD(‘12345zayats’);
SHOW GRANTS FOR ‘test1’@’%’;
+——————————————————————————————————+
| Grants for test1@% |
+——————————————————————————————————+
| GRANT USAGE ON *.* TO ‘test1’@’%’ IDENTIFIED BY PASSWORD ‘*90DEC1EAD774BD3B928A766605A42B928D77E443’ |
| GRANT SELECT, INSERT, UPDATE ON `test1`.* TO ‘test1’@’%’ |
+——————————————————————————————————+
2 rows in set (0.00 sec)
Комментарий by admin — 1 февраля 2013 @ 8:33
дать привелегии на ALTER TABLE:
GRANT ALTER ON test1.* to test1@’%’;
FLUSH PRIVILEGES;
Комментарий by admin — 1 февраля 2013 @ 9:35
вот вроде так выглядят парва для работы с таблицами:
GRANT SELECT, INSERT, UPDATE, DELETE, ALTER ON `test1`.* TO ‘test1’@’%’
Комментарий by admin — 11 февраля 2013 @ 12:42
права на создание временных таблиц
GRANT CREATE TEMPORARY TABLES ON test1.* to test1@’%’;
временные таблицы создаются так:
CREATE TEMPORARY TABLE `product_order` (
`id` INT(11) NOT NULL,
`list` INT(11) NOT NULL
);
Комментарий by admin — 18 марта 2013 @ 17:45