Удаленные Подключения Mysql Ubuntu



по какой-то причине мне не удалось удаленно подключиться к моему серверу MySQL. Я пробовал все, и я все еще получаю ошибки.



root@server1:/home/administrator# mysql -u monty -p -h www.ganganadores.cl
Enter password:
ERROR 1045 (28000): Access denied for user 'monty'@'server1.ganganadores.cl' (using password: YES)


теперь я попробовал запустить



 `GRANT ALL ON *.* to monty@localhost IDENTIFIED BY 'XXXXX'; 
GRANT ALL ON *.* to monty@'%' IDENTIFIED BY 'XXXXXX';`


и все равно ничего!
Что я делаю не так?



изменить:
мой.cnf прокомментировал привязку ip .

542   4  

4 ответов:

чтобы открыть MySQL для чего-либо, кроме localhost, вам нужно будет иметь следующую строку

для mysql версии 5.6 и ниже

раскомментированы в /etc/mysql/my.cnf и назначенный вашим компьютерам IP-адрес, а не loopback

для mysql версии 5.7 и выше

раскомментированы в /etc/mysql/mysql.conf.d/mysqld.cnf и назначенный вашим компьютерам IP-адрес, а не loopback

#Replace xxx with your IP Address 
bind-address        = xxx.xxx.xxx.xxx

или добавить bind-address = 0.0.0.0 если вы не хотите указать IP

затем остановите и перезапустите MySQL с новым my.записи КНФ. После запуска перейдите к терминалу и введите следующую команду.

lsof -i -P | grep :3306

это должно вернуться что-то вроде этого с вашим фактическим IP в xxx-х

mysqld  1046  mysql  10u  IPv4  5203  0t0  TCP  xxx.xxx.xxx.xxx:3306 (LISTEN)

если приведенная выше инструкция возвращает правильно, вы сможете принимать удаленных пользователей. Однако для удаленного пользователя для подключения к правильным priveleges вам нужно, чтобы этот пользователь был создан в обоих localhost и '%' в качестве.

CREATE USER 'myuser'@'localhost' IDENTIFIED BY 'mypass';
CREATE USER 'myuser'@'%' IDENTIFIED BY 'mypass';

затем,

GRANT ALL ON *.* TO 'myuser'@'localhost';
GRANT ALL ON *.* TO 'myuser'@'%';

и наконец,

FLUSH PRIVILEGES; 
EXIT;

если у вас нет того же пользователя, созданного выше, при локальном входе в систему вы можете наследовать базовые привилегии localhost и иметь проблемы с доступом. Если вы хотите ограничить доступ myuser, вам нужно будет прочитать синтаксис инструкции GRANT здесь если вы пройдете через все это и все еще будете иметь проблемы, опубликуйте некоторые дополнительные ошибки и мои.cnf соответствующая линия.

Примечание: Если lsof не возвращается или не найден, вы можете установить его здесь на основе вашего дистрибутива Linux. Вам не нужно lsof, чтобы заставить вещи работать, но это очень удобно, когда вещи не работают, как ожидалось.

добавить несколько пунктов на вершине отличный пост апеса:

1) Вы можете использовать команду ниже, чтобы проверить ip-адрес mysql server слушает

netstat -nlt | grep 3306

sample result:

tcp 0  0  xxx.xxx.xxx.xxx:3306  0.0.0.0:*   LISTEN

2) Использовать FLUSH PRIVILEGES принудительно загружать таблицы грантов, если по какой-то причине изменения не вступают в силу немедленно

GRANT ALL ON *.* TO 'user'@'localhost' IDENTIFIED BY 'passwd' WITH GRANT OPTION;
GRANT ALL ON *.* TO 'user'@'%' IDENTIFIED BY 'passwd' WITH GRANT OPTION;
FLUSH PRIVILEGES; 
EXIT;

3) если включен брандмауэр netfilter (sudo ufw enable) на компьютере сервера mysql выполните следующие действия, чтобы открыть порт 3306 для удаленного доступа:

sudo ufw allow 3306

проверить статус используя

sudo ufw status

4) После того, как удаленное соединение установлено, его можно проверить на клиентской или серверной машине с помощью команд

netstat -an | grep 3306
netstat -an | grep -i established

MySQL слушает только localhost, если мы хотим включить удаленный доступ к нему, то нам нужно внести некоторые изменения в my.cnf file:

sudo nano /etc/mysql/my.cnf

нам нужно закомментировать привязку-адрес и пропустить-внешнюю блокировку линий:

#bind-address = 127.0.0.1
# skip-external-locking

после внесения этих изменений, нам нужно перезапустить службу MySQL:

sudo service mysql restart

Если тестирование на Windows, не забудьте открыть порт 3306.

Comments

    Ничего не найдено.