Войти

Показать полную графическую версию : [решено] Debian 7 MySQL подключение


exo
13-05-2013, 20:34
Вообщем есть что:
root@debian7:~# uname -a
Linux debian7 3.2.0-4-amd64 #1 SMP Debian 3.2.41-2 x86_64 GNU/Linux
root@debian7:~# mysql -V
mysql Ver 14.14 Distrib 5.5.31, for debian-linux-gnu (x86_64) using readline 6.2
root@debian7:~# mysql -h debian7 -u root -p inv
Enter password:
Reading table information for completion of table and column names
You can turn off this feature to get a quicker startup with -A

Welcome to the MySQL monitor. Commands end with ; or \g.
Your MySQL connection id is 56
Server version: 5.5.31-0+wheezy1 (Debian)

Copyright (c) 2000, 2013, Oracle and/or its affiliates. All rights reserved.

Oracle is a registered trademark of Oracle Corporation and/or its
affiliates. Other names may be trademarks of their respective
owners.

Type 'help;' or '\h' for help. Type '\c' to clear the current input statement.
а вот когда делаю так с самого хоста, или удалённого хоста, то не получается подключится:
root@debian7:~# telnet debian7 3306
Trying 127.0.1.1...
Trying 192.168.10.174...
Connected to debian7.
Escape character is '^]'.
T
5.5.31-0+wheezy19O^it-~W─pMnc&0^iu10?mysql_native_password

!#08S01Got packets out of orderConnection closed by foreign host.
root@debian7:~# telnet localhost 3306
Trying ::1...
Trying 127.0.0.1...
telnet: Unable to connect to remote host: Connection refused

Вроде грант дал для рута и удалённого IP (через phpmyadmin делал), но доже с локального хоста не пускает. Куда смотреть? IPTABLES смотреть?
Рядом стоит debian 6 , там не помню, чтобы IPTABLES настраивал, только гранты давал.
Спасибо.

vadblm
13-05-2013, 21:35
telnet debian7 3306 »
Ну и извращенец вы, батенька.

exo
13-05-2013, 22:22
vadblm, а как ещё проверить подключение к базе? на 6-ке всё норм работает, а тут чот не зочет.

vadblm
13-05-2013, 22:46
Ну я не знаю, может вы протокол MySQL настолько знаете, что в бинарном виде с ним по телнету переговариваться умеете... Собсно, фаервол ни при чём, вы удачно подключаетесь и получаете кракозяблы - соединение установлено.
Проверять клиентом MySQL. Любым. От штатного терминального mysql до ODBC/JDBC коннекторов через эксель или ещё какую задницу. :)

exo
13-05-2013, 23:40
по телнету переговариваться умеете »
ну вообще-то любая сетевая служба имеет порт, который легко проверяется telnet-ом. для Mysql это 3306 (http://ru.wikipedia.org/wiki/%D0%A1%D0%BF%D0%B8%D1%81%D0%BE%D0%BA_%D0%BF%D0%BE%D1%80%D1%82%D0%BE%D0%B2_TCP_%D0%B8_UDP) как и для MS SQL.

ладно, я понял, проехали.

exo
18-05-2013, 02:47
Проверять клиентом MySQL »
Connector /Net (http://dev.mysql.com/downloads/connector/net/) и есть клиент. Но если будет легче от другого клиента: пожалуйста. Рабочий и не рабочий сервер (((
http://fs.exonix.ru/odbc1.png
http://fs.exonix.ru/odbc2.png
вообщем, фигня пока какая-то.
При этом, если делать коннект из другого линукса - то всё ок:
root@doc:~# echo "status" | mysql -uroot -p -h debian7
Enter password:
--------------
mysql Ver 14.14 Distrib 5.1.63, for debian-linux-gnu (x86_64) using readline 6.1

Connection id: 50
Current database:
Current user: root@doc.domain.local
SSL: Not in use
Current pager: stdout
Using outfile: ''
Using delimiter: ;
Server version: 5.5.31-0+wheezy1 (Debian)
Protocol version: 10
Connection: debian7 via TCP/IP
Server characterset: latin1
Db characterset: latin1
Client characterset: latin1
Conn. characterset: latin1
TCP port: 3306
Uptime: 2 min 57 sec

Threads: 1 Questions: 142 Slow queries: 0 Opens: 215 Flush tables: 1 Open tables: 52 Queries per second avg: 0.802
--------------

root@doc:~# mysql -uroot -p -h debian7
Enter password:
Welcome to the MySQL monitor. Commands end with ; or \g.
Your MySQL connection id is 81
Server version: 5.5.31-0+wheezy1 (Debian)

Copyright (c) 2000, 2011, Oracle and/or its affiliates. All rights reserved.

Oracle is a registered trademark of Oracle Corporation and/or its
affiliates. Other names may be trademarks of their respective
owners.

Type 'help;' or '\h' for help. Type '\c' to clear the current input statement.

SharkyUA
18-05-2013, 11:19
Проверьте доступ по IP:

mysql -u root -p -h debian7
select User,Host from mysql.user;

exo
18-05-2013, 17:26
select User,Host from mysql.user; »
mysql> select User,Host from mysql.user;
+------------------+----------------------+
| User | Host |
+------------------+----------------------+
| root | 127.0.0.1 |
| root | 192.168.10.10 |
| root | 192.168.10.19 |
| root | 192.168.10.20 |
| root | ::1 |
| debian-sys-maint | localhost |
| phpmyadmin | localhost |
| root | localhost |
| root | pc11 |
| root | pc11.domain.local |
+------------------+----------------------+
10 rows in set (0.00 sec)
где, pc11 и 192.168.10.19 - мой хост, с которого я запускаю скрипт PowerShell.
192.168.10.20 - это другой сервер с Дебиан 6 и базой 5.1. с него доступ к базе есть:
root@doc:~# mysql -uroot -p -h debian7
Enter password:
Welcome to the MySQL monitor. Commands end with ; or \g.
Your MySQL connection id is 48
Server version: 5.5.31-0+wheezy1 (Debian)

Copyright (c) 2000, 2011, Oracle and/or its affiliates. All rights reserved.

Oracle is a registered trademark of Oracle Corporation and/or its
affiliates. Other names may be trademarks of their respective
owners.

Type 'help;' or '\h' for help. Type '\c' to clear the current input statement.

mysql>

и вот, кстати, настройка для работающего сервера. и с 19, и с 10 и со 2-го доступ есть.
mysql> select User,Host from mysql.user;
+------------------+---------------+
| User | Host |
+------------------+---------------+
| root | 127.0.0.1 |
| root | 192.168.10.10 |
| root | 192.168.10.19 |
| root | 192.168.10.2 |
| root | doc |
| cacti | localhost |
| debian-sys-maint | localhost |
| phpmyadmin | localhost |
| root | localhost |
+------------------+---------------+
9 rows in set (0.00 sec)

vadblm
18-05-2013, 17:47
Ну и? IP адрес, с которого не получается подключение в списке есть?
Вы зачем-то замазали выхлоп ошибки, где отказ в подключении 'root'@'pc11<замазано>
Вопрос такой. Сервер MySQL может резольвить pc11<замазано>?

Хинт: если нужно дать, скажем, полный доступ юзеру root из всей подсети 192.168.10.0/24, то следует выдавать права так:

grant all privileges on *.* to 'root'@'192.168.10.%' identified by 'password';

exo
18-05-2013, 18:12
IP адрес, с которого не получается подключение в списке есть? »
| root | 192.168.10.19 |
| root | pc11 |
| root | pc11.domain.local |
где, pc11 и 192.168.10.19 - мой хост, с которого я запускаю скрипт PowerShell. »
всё есть трижды. я замазал только домен, и заменил его на domain.

grant all privileges on *.* to 'root'@'192.168.10.%' identified by 'password'; »
дал - ничего не изменилось (

vadblm
18-05-2013, 18:20
на сервере с mysql команда nslookup pc11.domain.local что даёт?

exo
18-05-2013, 18:28
root@debian7:~# nslookup pc11.domain.local
Server: 192.168.10.10
Address: 192.168.10.10#53

Name: pc11.domain.local
Address: 192.168.10.19

я вообще сейчас запутался. какую роль играет файл hosts? если есть ДНС. Но пока в файл хостс не добавишь нужных записей - не фига не заработает.
Например:
root@debian7:~# cat /etc/hosts
127.0.0.1 localhost
192.168.10.19 pc11.domain.local
# The following lines are desirable for IPv6 capable hosts
::1 localhost ip6-localhost ip6-loopback
ff02::1 ip6-allnodes
ff02::2 ip6-allrouters
192.168.10.174 localhost debian7 debian7.domain.local
если жирный localhost убрать, то с самого сервера нельзя будет попасть в mysql по имени, только по IP ( я не понимаю...

vadblm
18-05-2013, 18:39
я вообще сейчас запутался. какую роль играет файл hosts? если есть ДНС. »
Чтобы не дёргать днс. Впрочем, порядок определения имён можно изменить в /etc/nsswitch.conf:

hosts: files dns

поменять на

hosts: dns files

сменит приоритет. по умолчанию смотрим сначала /etc/hosts, если не нашлось, то в днс. а так наоборот.

man 5 nsswitch.conf

если жирный localhost »
Уберите. localhost должен казать только и исключительно на 127.0.0.1

exo
18-05-2013, 19:00
vadblm, так. я поднял новый сервер. что и как я должен по шагам настроить, чтобы был доступ для всех из локальной сети?
вот это понятно.
grant all privileges on *.* to 'root'@'192.168.10.%' identified by 'password';
настройки нового сервера INV:
root@inv:~# cat /etc/hosts
127.0.0.1 localhost
#127.0.1.1 inv.domain.local inv

# The following lines are desirable for IPv6 capable hosts
::1 localhost ip6-localhost ip6-loopback
ff02::1 ip6-allnodes
ff02::2 ip6-allrouters

root@inv:~# nslookup pc11.domain.local
Server: 192.168.10.10
Address: 192.168.10.10#53

Name: pc11.domain.local
Address: 192.168.10.19

root@inv:~# nslookup inv.domain.local
Server: 192.168.10.10
Address: 192.168.10.10#53

Name: inv.domain.local
Address: 192.168.10.22

root@inv:~# nslookup doc
Server: 192.168.10.10
Address: 192.168.10.10#53

Name: doc.domain.LOCAL
Address: 192.168.10.20


нужно ли что-то менять в my.cnf ? на рабочем сервере у меня изменено bind-address = 192.168.10.20. Поставил свой адрес в сервере INV 10.22.

при такой настройке, вот какие входы имеем или не имеем:
root@inv:~# mysql -u root -p
Enter password:
Welcome to the MySQL monitor. Commands end with ; or \g.

root@inv:~# mysql -u root -p -h localhost
Enter password:
Welcome to the MySQL monitor. Commands end with ; or \g.

root@inv:~# mysql -u root -p -h inv
Enter password:
ERROR 1045 (28000): Access denied for user 'root'@'inv.domain.local' (using password: YES)

root@inv:~# mysql -u root -p -h inv.domain.local
Enter password:
ERROR 1045 (28000): Access denied for user 'root'@'inv.domain.local' (using password: YES)

с другого линукса:
root@doc:~# mysql -uroot -p -h 192.168.10.22
Enter password:
ERROR 1045 (28000): Access denied for user 'root'@'doc.domain.local' (using password: YES)
root@doc:~# mysql -uroot -p -h inv
Enter password:
ERROR 1045 (28000): Access denied for user 'root'@'doc.domain.local' (using password: YES)

обычно, если в файл hosts добавить записи о doc и inv - то входы заработают. пока не добавлял. добавить?

vadblm
18-05-2013, 19:12
Вы бы логи посмотрели, почему не пускает. Ну, как я заподозрил, мускульный сервер не понимает (не может резольвить) клиента с запросам с именем хоста, представляющийся ему как someshit.domain.local.

Реверсного днс наверно тоже нет.

exo
18-05-2013, 19:25
Реверсного днс наверно тоже нет. »
хм... есть стандартный виндовый для домена, но PTR вряд ли там автоматом. сейчас проверю. Проверил - есть записи для всех.

Ну, как я заподозрил, мускульный сервер не понимает (не может резольвить) клиента с запросам с именем хоста, представляющийся ему как someshit.domain.local. »
так, а почему mysql 5.1 это может, а 5.5. не может?
Вы бы логи посмотрели, почему не пускает »
какие именно логи смотреть?
mysql.err и mysql.log - пустые. /var/log/mysql - директория пустая.

добавил в hosts - ничего не поменялось (
root@inv:~# cat /etc/hosts
127.0.0.1 localhost
#127.0.1.1 inv.domain.local inv

# The following lines are desirable for IPv6 capable hosts
::1 localhost ip6-localhost ip6-loopback
ff02::1 ip6-allnodes
ff02::2 ip6-allrouters
192.168.10.22 inv.domain.local inv
192.168.10.20 doc.domain.local doc
192.168.10.19 pc11.domain.local pc11

сейчас буду отдельный права для хостов писать.
добавил разрешение для сервера DOC:
CREATE USER 'root'@'192.168.10.20' IDENTIFIED BY '***';
GRANT ALL PRIVILEGES ON * . * TO 'root'@'192.168.10.20' IDENTIFIED BY '***' WITH GRANT OPTION MAX_QUERIES_PER_HOUR 0 MAX_CONNECTIONS_PER_HOUR 0 MAX_UPDATES_PER_HOUR 0 MAX_USER_CONNECTIONS 0 ;
и всё DOC может подключаться к серверу:
root@doc:~# mysql -uroot -p -h inv.domain.local
Enter password:
Welcome to the MySQL monitor. Commands end with ; or \g.
Your MySQL connection id is 62
Server version: 5.5.31-0+wheezy1 (Debian)

Добавил правило:
CREATE USER 'root'@'192.168.10.19' IDENTIFIED BY '***';
GRANT ALL PRIVILEGES ON * . * TO 'root'@'192.168.10.19' IDENTIFIED BY '***' WITH GRANT OPTION MAX_QUERIES_PER_HOUR 0 MAX_CONNECTIONS_PER_HOUR 0 MAX_UPDATES_PER_HOUR 0 MAX_USER_CONNECTIONS 0 ;
есть коннект из PowerShell !!! что не так было???

добавляю на старый сервер Debian7 - не работает (((

exo
23-01-2014, 14:23
опытным путём вот что удалось выяснить:
если во время настройки mysql сделать неуспешные попытки подключения - то подключится не получится.
Однако, если после настройки подключится с любого другого сервера - то подключится получится.

такое чувство, что mysql запоминает у кого не получилось подключиться и банит его...
собственно - поменял IP на сервере с 22 на 24 - ПУСТИЛО !!!

exo
23-01-2014, 14:44
опытным путём вот что удалось выяснить:
если во время настройки mysql сделать неуспешные попытки подключения - то подключится не получится.
Однако, если после настройки подключится с любого другого сервера - то подключится получится.

такое чувство, что mysql запоминает у кого не получилось подключиться и банит его...
собственно - поменял IP на сервере с 22 на 24 - подключился !!!

loldert12
18-02-2014, 09:39
Странно, никогда такого раньше не слышал, чтоб база банила по неверно авторизации.
Ставил lamp на debian 7 вот по этой статье: http://btut.ru/debian-7-1-ustanovka-lamp-linux-apache-php-mysql.html, никаких багов небыло замеченно.




© OSzone.net 2001-2012