MariaDB в Debian: синтаксическая ошибка: как переключить аутентификацию сокета unix обратно на парольную? - PullRequest
0 голосов
/ 28 января 2019

Я только что установил Mariadb в моей новой системе Unix (сервер Mariadb версии 10.1.37 Debian 9.6).У меня есть следующие пользователи:

+------------+-----------------------+-------------+-----------+
| user       | authentication_string | plugin      | host      |
+------------+-----------------------+-------------+-----------+
| root       |                       | unix_socket | localhost |
| phpmyadmin |                       |             | localhost |
+------------+-----------------------+-------------+-----------+

Я хочу иметь возможность войти в систему как «root» с паролем (а не с помощью плагина unix_socket).Я попытался перейти на аутентификацию на основе пароля с помощью команды ALTER USER.Я вхожу в MariaDB из root-аккаунта, используя "sudo mysql".Затем я попробовал каждую из следующих команд:

MariaDB [(none)]> ALTER USER 'root'@'localhost' IDENTIFIED WITH
mysql_native_password BY 'mypassword';

MariaDB [(none)]> ALTER USER 'root'@'localhost' IDENTIFIED VIA
mysql_native_password BY 'mypassword';

MariaDB [(none)]> ALTER USER root@localhost IDENTIFIED VIA 
mysql_native_password;
SET PASSWORD = PASSWORD('mypassword');

MariaDB [(none)]> ALTER USER root@localhost IDENTIFIED WITH 
mysql_native_password;
SET PASSWORD = PASSWORD('mypassword');

MariaDB [(none)]> ALTER USER 'root'@'localhost' IDENTIFIED WITH 
mysql_native_password;
SET PASSWORD = PASSWORD('mypassword');

Во всех случаях я получаю следующую ошибку: ОШИБКА 1064 (42000): у вас ошибка в синтаксисе SQL;проверьте руководство, соответствующее вашей версии сервера MariaDB, чтобы найти правильный синтаксис для использования рядом с '...' в строке 1.

Каков правильный синтаксис / способ изменения корневого имени входа с сокета на пароль??Любая помощь будет оценена, большое спасибо.

Ответы [ 2 ]

0 голосов
/ 15 апреля 2019

После сеансов сафари, изучения, поиска и поиска эти 3 команды помогают мне в случае MariaDB, упомянутом в этом вопросе:

mysqld_safe --skip-grant-tables --skip-networking &

UPDATE user SET plugin='' WHERE user ='root'; 

UPDATE mysql.user SET 
    authentication_string = PASSWORD('UNCOMPROMISABLE_STRONGHOLD_PASSWORD') 
    WHERE User = 'root' AND Host = 'localhost';
0 голосов
/ 29 января 2019

Похоже, вы только что установили MariaDB или MySQL.

После установки вам нужно просто запустить следующее из root:

mysql_secure_install

или:

sudo mysql_secure_install

Подробнее здесь

Пока я читал руководства, MariaDB сделал функцию сокета аутентификации.

Поэтому попробуйте удалить плагин :

UNINSTALL SONAME 'auth_socket';

и / или переключить на собственный пароль:

ALTER USER root@localhost IDENTIFIED VIA mysql_native_password;

, если он также не будет работать, поэтому попробуйте очистить поле плагина пользовательской таблицы и очистить привилегии:

USE mysql; 
UPDATE user SET plugin='' WHERE user ='root'; 
FLUSH PRIVILEGES; 
...