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]