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
中如何处理这个?
我通过以下方法解决了这个问题:
解决方案是为 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)
我有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
中如何处理这个?
我通过以下方法解决了这个问题:
解决方案是为 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
对于 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)