2010-12-09 5 views
8

Я бегу Linux Mint и пытается подключиться к MySql таким образомпочему MySql подключения любого/все порты

mysql --port=3306 -u root -p 

Тогда это побуждает меня мой пароль. Все в порядке. Почему, когда я печатаю что-то вроде этого он все еще работает ....

mysql --port=1234 -u root -p 

Если это не обязательно, так как нет ни одного сервера MySQL работает на порту 1234?

Причина, по которой я прошу об этом, заключается в том, что я хочу создать туннель SSH для подключения к базе данных на другом сервере. Скажем, SSH-туннель переведет весь мой трафик с localhost: 3308 на myremoteserver: 3306. Поскольку мой локальный mySQL-сервер принимает мои подключения во всех портах, я не могу подключиться к порту 3308 и удалёться на удаленном сервере. Я все еще нахожусь на своем локальном сервере ....

Даже если мои параметры туннеля SSH могли быть неправильными, мне было интересно, знает ли кто-нибудь, почему я могу подключиться к порту 1234, и он по-прежнему попадает на мой локальный сервер mySQL, работающий на 3306 ?

+0

Когда вы говорите, «работает», вы имеете в виду, что запрос на ввод пароля (который он будет), или идет помимо этого и фактически регистрирует вас на сервере mysql? Если вы хотите подключиться к туннелю SSH, который использует локальный порт, я также предлагаю указать хост в приглашении клиента mysql. `mysql --port = 3308 -hlocalhost -u root -p`. Это позволит вашему клиенту mysql использовать трубку Unix для подключения к вашему серверу. Кроме того, посмотрите раздел [client] в файле /etc/my.cnf. – Vic 2010-12-09 07:52:45

+0

Да, это фактически записывает меня на сервер mySQL. Это последнее, что я пробовал, и он фактически регистрирует меня на сервере mySQL ... mysql -h localhost --port = 12312312 -u root -p – 2010-12-09 08:07:55

ответ

10

IIRC MySQL соединяет вас с сокетом Unix, если вы подключаетесь к локальным. Поскольку в этом случае вы не подключаете вас через TCP, нет никакого порта, и номер порта, который вы даете, не имеет значения.

Редактировать: Не уверен, что это верно для всех систем, но если я использую 127.0.0.1 или имя хоста вместо localhost, mysql подключается через TCP, а номер порта имеет значение - я могу подключиться только с правильным номером порта ,

1

Он запросит у вас пароль до пытается связаться. Если ввести пароль (или что-нибудь еще в этом отношении), и пусть он дальше, он ответит что-то вроде:

ERROR 2002 (HY000): Can't connect to local MySQL server through socket '/opt/local/var/run/mysql5/mysqld.sock' 
+0

Извините, я забыл упомянуть, что он действительно соединяет меня после Я ввожу свой пароль ... – 2010-12-09 08:10:18

11

Чтобы принудительно использовать соединение TCP --protocol=TCP.

Пример:

Сначала SSH туннель

ssh -L 4000:localhost:3306 server.ch 

, а затем подключиться к удаленному серверу тузд с

mysql -h localhost --port=4000 --protocol=TCP -u root -p 
1

@titanoboa, ТНХ для этого! У меня была такая же проблема. Просто чтобы добавить вы можете заставить соединение TCP, даже для локального хоста, используя следующие

[client] 
port = 3306 
socket = /var/run/mysqld/mysqld.sock 
protocol = TCP 

Приветствия