[[SOLVED] MySql доступ по сети]
Всем привет
Возникла задача сделать доступ для пользователей к субд внутри сети напрямую через mysql клиент (не через апач)
Прогуглил этот вопрос и получил много ответов, но они не помогли
что сделал
1) закомментировал строку в файле /etc/mysql/my.cnf, а так же вбивал адрес машины с мускулом и оставлял нули
bind-address = 127.0.0.1
2) /etc/mysql/mysqlaccess.conf
# ----------------#
# Global settings #
# --------------- #
$Param{'host'} = '172.16.1.234'; - это адрес компа с мускулом
$Param{'user'} = 'nobody';
$Param{'db'} = 'test';
$Param{'password'} = '';
$Param{'debug'} = 0;# --------------------------#
# Settings for Command-line #
# ------------------------- #
if ($CMD) {
$Param{'superuser'} = 'root';
$Param{'rhost'} = 'localhost';
# $Param{'rhost'} = '172.16.1.234';
$Param{'spassword'} = '';
$Param{'brief'} = 1;
}# ---------------------#
# Settings for CGI-BIN #
# -------------------- #
if ($CGI) {
$Param{'superuser'} = 'root';
$Param{'rhost'} = 'localhost';
$Param{'spassword'} = '';
$Param{'table'} = 1;
}
3) netstat -a | grep mysql
tcp 0 0 172.16.1.234:mysql *:* LISTEN
unix 2 [ ACC ] STREAM LISTENING 69483 /var/run/mysqld/mysqld.sock
4) пробую: mysql --host=172.16.1.234 --user=nobody --port=3306
ERROR 1130 (00000): Host '172.16.1.234' is not allowed to connect to this MySQL server
Не получается, хотя соединение создается при этих неудачных попытках
netstat -a | grep mysql
tcp 0 0 172.16.1.234:mysql *:* LISTEN
tcp 0 0 172.16.1.234:mysql 172.16.1.234:59303 TIME_WAIT
unix 2 [ ACC ] STREAM LISTENING 69483 /var/run/mysqld/mysqld.sock
unix 3 [ ] STREAM CONNECTED 69542 /var/run/mysqld/mysqld.sock
Подскажите пожалуйста, как открыть доступ к мускулу в сети
ЗЫ: iptables не включен, комп пингуется
Заранее благодарен за помощь
- Для комментирования войдите или зарегистрируйтесь
:)
bind-address = 0.0.0.0
В /etc/mysql/mysqlaccess.conf не надо ничего трогать.
Все. Открыто.
Теперь смотри на права пользователей муськи и базы на предмет разрешения
соединяния с твоих хостов.
права смотреть из терминала,
права смотреть из терминала, локально?
или туту?
к какому порту коннектится? который в LISTEN находится?
:)
порт - 3306, права смотреть или из терминала, или удаленно, или локально...
Смотрите в сторону GRANT PRIVILEGES
Почитайте http://www.mysql.ru/docs/man/Adding_users.html
Секцию [client] тоже не трогайте, тем более без понимания того что делаете.
Верните все конфиги в исходное состояние, кроме bind-address = 0.0.0.0
Извините, а "через апач это
Извините, а "через апач" это как? Ещё пару постов и в "аффтар пиши есчо" 0)
:)
Если "через апачь" - имелось ввиду наверное phpmyadmin - кстати, там тоже есть возможность управлять доступом (привилегии),
хотя с командной строки все-таки быстрей...
Оффтоп.
Как по мне, то тема не дотягивает сильно до "аффтар пешчи исче..."
Вообщем то все по теме и вполне нормально, единственное, я не даю сразу автору готовое решение,
а пытаюсь его наставить на тот путь, при котором он это один раз сделает сам (а не скопипастит)
и все поймет, что сделал. Но к сожалению так и не ясно, разобрался человек или нет.
bind-address = 127.0.0.1
поменял
bind-address = 127.0.0.1
на
bind-address = 192.168.1.1
у меня таким образом появилс доступ из сети через mysql клиент
По умолчанию, юзеру root
По умолчанию, юзеру root разрешен только локальный вход.
Дабы это побороть, надо войти локально под рутом и поправить права доступа (вот тут курить маны по муське, гуглить и еще раз курить маны по муське)
server ~ #
ну и еще раз повтарюсь поставл bind-adress 192.168.1.1
в моем случае 192,168,1,1 - Гентоо
192,168,1,4 - Клиент который заходит через мускул клиент на гентоо используя созданный только что логин NEWUSER
Извиняюсь... решил проблему и
Извиняюсь... решил проблему и не отписался
Пошел верным путем, который мне посоветовал Agressor и поучил мат часть.
Я прочитал мануал про привелегии пользователей в мускуле и узнал много нового...
1) Весь доступ к серверу происходит в два этапа: авторизация и дальнейшая обработка каждого запроса
2) Привелегии хранятся в скрытой (по умолчанию) базе данных с именем mysql
3) Авторизация (или первый этап) происходит на основании таблицы mysql.user (user в базе mysql)
...
еще много чего интересного, но на этом мне вполне оказалось достаточно, чтобы решить мою проблему
Решение
1) на основании вышесказанного, надо добавить в таблицу mysql.user нового пользователя, который мог бы коннектиться с любого хоста
можно добавить сразу и пароль с этой командой, но заморачиваться не стал, это можно сделать и позже
2) связать запускаемый демон со всеми доступными адресами сетевых интерфейсов системы
3) перезапустить демон, если ранее был выставлен другой bind
согласен, но про нее тоже прочел - это оказывается настройки по умолчанию для соединений без указанных имен и другой инфы
да, выразился не очень удачно... но вы поняли правильно, я имел в виду доступ через веб, как вариант phpmyadmin
Stinkybob, тоже вариант интересный, не знал о нем
Спасибо огромное всем за помощь
ЗЫ: не совсем понятно для чего же файлик /etc/mysql/mysqlaccess.conf