Mysql 与 sudo 一起工作,但不与 sudo 一起工作。 (ubuntu 16.04, mysql 5.7.12-0ubuntu1.1)

Mysql works with sudo, but without not. (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 中有重要的 unix 用户登录数据库,但是在 Mysql 中如何处理这个?


我通过以下方法解决了这个问题:

https://askubuntu.com/questions/766334/cant-login-as-mysql-user-root-from-normal-user-account-in-ubuntu-16-04

解决方案是为 root mysql 帐户提供密码(如果您还没有这样做的话)。您收到的错误消息是因为需要密码,而您没有提供。重置 root 密码:

$ mysqladmin -u root password
$ New password: 

或者如果您已经设置了 root 密码(我对此表示怀疑,否则您将无法通过 sudo 登录)那么它将是

$ mysqladmin -u root -p  password

Mysql 与 postgres 不同,用户未与 unix 用户关联。

请尝试以下命令:

mysql -uroot -p[password]

[密码] - 输入您在安装时设置的密码 mysql。

您也可以试试:

sudo mysql -uroot -p[password]

这个问题似乎主要是由 auth_socket 插件引起的,如果 root 用户没有密码,现在默认使用该插件。 (以前,apt-get 安装过程要求输入 root 密码,但它似乎不再那样做,所以 auth_socket 被启用。)

对于任一查询,首先使用 sudo mysql

作为 root 用户登录

对于 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;

服务器版本:5.7.18-0ubuntu0.16.04.1 (Ubuntu)

第 1 步:

 server@Server:~$ sudo -i

第 2 步:

 root@Server:~# mysql

输出如下所示:

 server@Server:~$ sudo -i
 [sudo] password for server: 
 root@Server:~# 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 'Abc123123@';

输出:

 Query OK, 0 rows affected (0.00 sec)