Поиск и устранение неполадок с подключением
Если вы совершенно новичок в MariaDB и реляционных базах данных, вы можете начать с введения в MariaDB. Также убедитесь, что вы понимаете параметры подключения, обсуждаемые в статье Подключение к MariaDB.
Существует ряд распространенных проблем, которые могут возникнуть при подключении к MariaDB.
Сервер не запущен по указанному адресу
Если полученная ошибка имеет вид:
mariadb -uname -p -uname -p ERROR 2002 (HY000): Can't connect to local MySQL server through socket '/var/run/mysqld/mysqld.sock' (2 "No such file or directory")
или
mariadb -uname -p --port=3307 --protocol=tcp ERROR 2003 (HY000): Can't connect to MySQL server on 'localhost' (111 "Connection refused")
сервер либо не запущен, либо не запущен на указанном порту, сокете или канале. Убедитесь, что вы используете правильные параметры хоста, порта, канала, соккета и протокола, или, как альтернативу, см. Получение, установка и обновление MariaDB, Запуск и остановка MariaDB или Поиск и устранение неполадок установки.
Файл сокета может находиться в нестандартном пути. В этом случае параметр socket, вероятно, указан в файле my.cnf. Проверьте, что его значение идентично в разделах [mysqld] и [client]; в противном случае клиент будет искать сокет в неправильном месте.
Если вы не уверены, где находится файл Unix-соккета, вы можете узнать это, например:
netstat -ln | grep mysqld unix 2 [ ACC ] STREAM LISTENING 33209505 /var/run/mysqld/mysqld.sock
Невозможно подключиться из удаленного местоположения
Как правило, сервер MariaDB по умолчанию не принимает подключения от удаленного клиента или подключения по TCP с именем хоста и должен быть настроен для разрешения таких подключений.
(/my/maria-10.4) ./client/mysql --host=myhost --protocol=tcp --port=3306 test ERROR 2002 (HY000): Can't connect to MySQL server on 'myhost' (115) (/my/maria-10.4) telnet myhost 3306 Trying 192.168.0.11... telnet: connect to address 192.168.0.11: Connection refused (/my/maria-10.4) perror 115 OS error code 115: Operation now in progress
Для решения этой проблемы см. Настройка MariaDB для удаленного доступа к клиенту
Проблемы с аутентификацией
Обратите внимание, что начиная с MariaDB 10.4.3, плагин аутентификации unix_socket по умолчанию включен в системах Unix-подобных. Он использует учетные данные операционной системы при подключении к MariaDB через локальный файл Unix-соккета. См. плагин аутентификации unix_socket для получения инструкций по подключению и переключению на аутентификацию по паролю, а также Аутентификация от MariaDB 10.4 для обзора изменений в MariaDB 10.4.
Аутентификация предоставляется для определённой комбинации имя пользователя/хост. user1'@'localhost', например, не то же самое, что user1'@'166.78.144.191'. Подробности о предоставлении разрешений см. в статье GRANT.
Пароли хешируются с помощью функции PASSWORD. Если вы установили пароль с помощью инструкции SET PASSWORD, функция PASSWORD должна быть использована одновременно. Например, SET PASSWORD FOR 'bob'@'%.loc.gov' = PASSWORD('newpass') вместо просто SET PASSWORD FOR 'bob'@'%.loc.gov' = 'newpass';
Проблемы с экспортом результатов запросов
Если вы можете запускать обычные запросы, но получаете ошибку аутентификации при выполнении инструкций SELECT ... INTO OUTFILE, SELECT ... INTO DUMPFILE или LOAD DATA INFILE, у вас нет разрешения на запись файлов на сервер. Это требует привилегии FILE. См. статью GRANT.
Доступ к серверу, но не к базе данных
Если вы можете подключиться к серверу, но не к базе данных, например:
USE test; ERROR 1044 (42000): Access denied for user 'ian'@'localhost' to database 'test'
или можете подключиться к определенной базе данных, но не к другой, например mariadb -uname -p -u name db1 работает, но не mariadb -uname -p -u name db2, вам не предоставлены разрешения на эту конкретную базу данных. См. статью GRANT.
Файлы параметров и переменные окружения
Возможно, файлы параметров или переменные окружения предоставляют неправильные параметры подключения. Проверьте значения, указанные в любых файлах параметров, которые считываются клиентом, который вы используете (см. Файлы конфигурации mysqld и группы и документацию по конкретному используемому клиенту - см. Клиенты и утилиты).
Файлы параметров обычно можно подавить с помощью параметра no-defaults, например:
mariadb-import --no-defaults ...
Невозможно подключиться к работающему серверу / Утерян пароль root
Если вы не можете подключиться к серверу, например, потому что вы потеряли пароль root, вы можете запустить сервер без использования таблиц привилегий, выполнив параметр --skip-grant-tables, который предоставляет пользователям полный доступ ко всем таблицам. Затем вы можете запустить FLUSH PRIVILEGES, чтобы возобновить использование таблиц разрешений, а затем SET PASSWORD, чтобы изменить пароль для учетной записи.
localhost и %
Вы могли создать пользователя с чем-то вроде:
CREATE USER melisa identified by 'password';
Это создает пользователя с хостом-подстановочным знаком «%».
select user,host from mysql.user where user='melisa'; +--------+------+ | user | host | +--------+------+ | melisa | % | +--------+------+
Однако, у вас всё ещё могут возникать проблемы с входом с localhost. Некоторые конфигурации создают анонимных пользователей, включая localhost. Таким образом, в таблице пользователей существуют следующие записи:
select user,host from mysql.user where user='melisa' or user=''; +--------+-----------+ | user | host | +--------+-----------+ | melisa | % | | | localhost | +--------+-----------+
Поскольку вы подключаетесь с localhost, используются анонимные учетные данные, а не те, которые предназначены для пользователя «melisa». Решение состоит либо в добавлении нового пользователя, специфичного для localhost, либо в удалении анонимного пользователя localhost.
См. также
© 2023 MariaDB
Licensed under the Creative Commons Attribution 3.0 Unported License and the GNU Free Documentation License.
https://mariadb.com/kb/en/troubleshooting-connection-issues/