Смена пароля root на MariaDB (Debian 9)

12
M2
На сайте с 11.01.2011
Offline
342
2637

Имеем свежеустановленную систему.

Мои действия:

1) Коннект к консоли mysql:

mysql -u root

2) Использование БД:

USE mysql;

3) Смена пароля:

UPDATE user SET password=PASSWORD('password') WHERE User='root' AND Host='localhost';

4) Выход:

exit

После выполнения всех вышеперечисленных действий:

1) Меня пускает в mysql без пароля, т.е. команда

mysql -u root

вполне работоспособна

2) Если сделать так:

mysql -u root -p

требует ввод пароля, но что бы я тут ни ввел, пускает без пароля

3) Рестарт mysql не помогает.

Где я что делаю неправильно?

------------------- Крутые VPS и дедики. Качество по разумной цене ( http://cp.inferno.name/view.php?product=1212&gid=1 ) VPS25OFF - скидка 25% на первый платеж по ссылке выше
Twickbot
На сайте с 13.03.2017
Offline
56
#1
mark2011:
Где я что делаю неправильно?

Там скриптик есть специальный:

/usr/bin/mysql_secure_installation

Запустите и проделайте все шаги.

Автоматизация работы в браузере. Пишу парсеры, постеры, кликеры, лайкеры, и т.п.
M2
На сайте с 11.01.2011
Offline
342
#2

Twickbot,

проделал только что. Честно, то же самое... и рестарт mysql опять не помог...

[umka]
На сайте с 25.05.2008
Offline
456
#3

Если вы делаете изменения в системной таблице с помощью команды UPDATE, то после этого нужно делать FLUSH PRIVILEGES;

А вообще, для изменения паролей даже есть специальная команда

SET PASSWORD FOR 'root'@'localhost' = PASSWORD('password');

Если всё равно ничего не получается, зайдите через консоль, как вы это делаете "mysql -u root", и покажите, что выдаёт SHOW GRANTS;

Лог в помощь!
M2
На сайте с 11.01.2011
Offline
342
#4

[umka],

не-а, не получилось, варнинг какой-то выдал в ответ на команду...

вот SHOW GRANTS:


MariaDB [(none)]> SHOW GRANTS;
+------------------------------------------------------------------------------------------------+
| Grants for root@localhost |
+------------------------------------------------------------------------------------------------+
| GRANT ALL PRIVILEGES ON *.* TO 'root'@'localhost' IDENTIFIED VIA unix_socket WITH GRANT OPTION |
| GRANT PROXY ON ''@'%' TO 'root'@'localhost' WITH GRANT OPTION |
+------------------------------------------------------------------------------------------------+
2 rows in set (0.00 sec)

MariaDB [(none)]>



---------- Добавлено 20.01.2018 в 10:33 ----------

[umka:
;15438420]Если вы делаете изменения в системной таблице с помощью команды UPDATE, то после этого нужно делать FLUSH PRIVILEGES;

Делал, на самом деле, знаю об этом, просто забыл указать сей факт в стартпосте.

---------- Добавлено 20.01.2018 в 10:34 ----------

Сейчас сделал shutdown серверу, затем вошел

mysqld_safe --skip-grant-tables &

выполнил все необходимые команды, ребутнул систему и... ноль!

[umka]
На сайте с 25.05.2008
Offline
456
#5

Вот эта приблуда позволяет системным пользователям авторизовываться без указания пароля при подключении через консоль:

mark2011:
... IDENTIFIED VIA unix_socket ...
M2
На сайте с 11.01.2011
Offline
342
#6

Что самое прикольное:


SELECT Host, User, Password from mysql.user WHERE User = 'root';

всё нормально, выдает хеш пароля... баг в MariaDB?

Twickbot
На сайте с 13.03.2017
Offline
56
#7
mark2011:
IDENTIFIED VIA unix_socket

Думаю в этом дело.

Почитайте:

https://mariadb.com/kb/en/library/authentication-plugin-unix-socket/

M2
На сайте с 11.01.2011
Offline
342
#8
[umka:
;15438434]Вот эта приблуда

Вы хотите сказать, что при подключении через тот же phpMyAdmin всё будет нормально? Или при любом подключении НЕ через консоль?

[umka]
На сайте с 25.05.2008
Offline
456
#9
mark2011:
Вы хотите сказать, что при подключении через тот же phpMyAdmin всё будет нормально? Или при любом подключении НЕ через консоль?

Если указывается "localhost", то это тоже через "unix_socket". И если PhpMyAdmin (или ещё что-то, например, сайт какой-то) работает от пользователя "root", то подключиться к БД под пользователем "root" он сможет без указания пароля.

Если же сайт работает от пользователя "vasya", то подключиться к БД под пользователем "vasya" он сможет без указания пароля.

Для этого, конечно, нужно, чтобы пользователи БД создавались определённым образом (IDENTIFIED VIA unix_socket), что у вас, видимо, происходит по умолчанию.

Почитайте ссылочку выше, там же всё написано, даже примеры есть.

coolwebsearcher
На сайте с 29.09.2008
Offline
87
#10

в консоле mysql выполните


delete from mysql.user where user='';
update mysql.user set plugin=null where user='root';
flush privileges;
Услуги (http://www.our-dns.info/) | Цены (http://www.our-dns.info/prices/) | Отзывы (/ru/forum/970789)
12

Авторизуйтесь или зарегистрируйтесь, чтобы оставить комментарий