Mysql работает с sudo, но без него. (ubuntu 16.04, mysql 5.7.12-0ubuntu1.1)
У меня есть Ubuntu 16.04
и Mysql 5.7.12-0ubuntu1.1
. Когда я печатаю:
sudo mysql -u root
Я могу войти в консоль mysql, но когда я напечатаю его без sudo
:
mysql -u root
Я получаю ошибку:
ERROR 1698 (28000): Access denied for user 'root'@'localhost'
Моя проблема возникла, когда я установил и удалил MariaDB
. Я помню, что в PostgreSQL
существует важный, который пользовательский логин для входа в базу данных, но как обращаться с этим в Mysql
?
Я решил эту проблему следующим образом:
https://askubuntu.com/info/766334/cant-login-as-mysql-user-root-from-normal-user-account-in-ubuntu-16-04
Ответы
Ответ 1
Решение состоит в том, чтобы предоставить пароль для учетной записи root mysql (если вы еще этого не сделали). Сообщение об ошибке, которое вы получаете, связано с тем, что требуется пароль, и вы его не предоставили. Reset пароль root с помощью:
$ mysqladmin -u root password
$ New password:
или если вы уже установили пароль root (что я сомневаюсь, иначе вы не смогли бы войти через sudo), тогда это будет
$ mysqladmin -u root -p password
Пользователи Mysql не связаны с пользователями unix, в отличие от postgres.
Ответ 2
Эта проблема, по-видимому, вызвана главным образом плагином auth_socket
, который теперь используется по умолчанию, если у пользователя root нет пароля. (Раньше процесс установки apt-get запрашивал пароль для root, но, похоже, он больше не работает, поэтому auth_socket
становится включенным.)
Для любого запроса сначала войдите как пользователь root с помощью sudo mysql
Для MySQL или MariaDB >= 10.2:
ALTER USER 'root'@'localhost' IDENTIFIED WITH mysql_native_password BY 'test';
Для других, кто может использовать MariaDB < 10.2 (который не поддерживает ALTER USER
), вы захотите запустить этот запрос:
SET PASSWORD = PASSWORD('test');
update mysql.user set plugin = 'mysql_native_password' where User='root';
FLUSH PRIVILEGES;
Ответ 3
Версия сервера: 5.7.18-0ubuntu0.16.04.1 (Ubuntu)
Шаг 1:
[email protected]:~$ sudo -i
Шаг 2:
[email protected]:~# mysql
Результат выглядит следующим образом:
[email protected]:~$ sudo -i
[sudo] password for server:
[email protected]:~# mysql
Welcome to the MySQL monitor. Commands end with ; or \g.
Your MySQL connection id is 16
Server version: 5.7.18-0ubuntu0.16.04.1 (Ubuntu)
Copyright (c) 2000, 2017, Oracle and/or its affiliates. All rights reserved.
Oracle is a registered trademark of Oracle Corporation and/or its
affiliates. Other names may be trademarks of their respective
owners.
Type 'help;' or '\h' for help. Type '\c' to clear the current input statement.
Шаг 3:
mysql> ALTER USER 'root'@'localhost' IDENTIFIED WITH mysql_native_password BY '[email protected]';
Вывод:
Query OK, 0 rows affected (0.00 sec)
Ответ 4
Попробуйте выполнить команду ниже:
mysql -uroot -p[password]
[пароль] - введите пароль, который вы установили при установке mysql.
Вы также можете попробовать:
sudo mysql -uroot -p[password]