首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >Ubuntu上新安装后用户'root'@'localhost‘(使用密码: YES)的访问被拒绝

Ubuntu上新安装后用户'root'@'localhost‘(使用密码: YES)的访问被拒绝
EN

Stack Overflow用户
提问于 2015-01-21 13:13:16
回答 9查看 372.1K关注 0票数 169

今天,我以root身份登录到Ubuntu14.04.1 LTS ll

然后是apt-get install mariadb-server (没有sudo,而是作为根)。

我和mySQL -h localhost -u root --password=<PW>在一起

拒绝用户'root'@'localhost‘的访问(使用密码: YES)

使用mySQL -u root -p,我登录到DB并执行了以下操作

代码语言:javascript
运行
复制
GRANT ALL PRIVILEGES ON *.* TO 'root'@'localhost' IDENTIFIED BY '<PW>';
FLUSH ALL PRIVILEGES;

但这没什么用。你知不知道?我没有找到类似问题的答案。

EN

回答 9

Stack Overflow用户

发布于 2016-03-02 13:32:04

TL;DR:作为根用户访问新版本的mysql/mariadb,在新安装之后,您需要在根shell中(即su -sudo -i首先启动的shell内的mysql -u root )。

在Ubuntu上做了同样的升级之后,我也遇到了同样的问题。

奇怪的是

代码语言:javascript
运行
复制
sudo /usr/bin/mysql_secure_installation

将接受我的密码,并允许我设置密码,但我无法通过root客户机以mysql身份登录

我不得不从mariadb开始

代码语言:javascript
运行
复制
sudo mysqld_safe --skip-grant-tables

作为根用户访问,而所有其他用户仍然可以访问良好。

查看我注意到的根用户的mysql.user表,plugin列被设置为unix_socket,而所有其他用户都被设置为‘mysql_plugin_password’。快速查看此页面:套接字-认证-插件/解释说,Unix通过将运行客户端的进程的uidmysql.user表中的用户的uid匹配来启用登录。换句话说,要以root的形式访问mariadb,您必须以root身份登录。

当然,在需要身份验证的情况下,可以重新启动我的mariadb守护进程,我可以以root用户身份登录

代码语言:javascript
运行
复制
sudo mysql -u root -p

代码语言:javascript
运行
复制
sudo su -
mysql -u root -p

完成这一操作后,我思考了如何访问而不必执行sudo,这只是运行这些mysql查询的问题。

代码语言:javascript
运行
复制
GRANT ALL PRIVILEGES on *.* to 'root'@'localhost' IDENTIFIED BY '<password>';
FLUSH PRIVILEGES;

(用所需的mysql根密码替换<password> )。这为根用户启用了密码登录。

另外,运行mysql查询:

代码语言:javascript
运行
复制
UPDATE mysql.user SET plugin = 'mysql_native_password' WHERE user = 'root' AND plugin = 'unix_socket';
FLUSH PRIVILEGES;

将根帐户更改为在不更改密码的情况下使用密码登录,但这可能会给您留下一个mysql/mariadb安装,上面没有根密码。

在这两种情况下,您都需要重新启动mysql/mariadb:

代码语言:javascript
运行
复制
sudo service mysql restart

瞧,我可以通过mysql -u root -p访问我的个人账户

请注意,这样做会降低安全性,,想必MariaDB开发人员选择这样的根访问工作是有充分理由的。

考虑到这一点,我很高兴不得不使用sudo mysql -u root -p,所以我将切换到它,但是我想我会发布我的解决方案,因为我在其他地方找不到解决方案。

票数 357
EN

Stack Overflow用户

发布于 2016-06-11 17:10:32

在ClearUbuntu16.04LTS中,本地主机的MariaDB根登录从密码样式更改为sudo登录样式。

所以,就这么做

代码语言:javascript
运行
复制
sudo mysql -u root

因为我们想用密码登录,所以创建另一个用户“user”

在MariaDB控制台..。(您可以使用“sudo -u root”进入-u控制台)

代码语言:javascript
运行
复制
use mysql
CREATE USER 'user'@'localhost' IDENTIFIED BY 'yourpassword';
\q

然后在bash shell提示符中,

代码语言:javascript
运行
复制
mysql-workbench

您还可以在本地主机上使用“user”和“yourpassword”登录。

票数 43
EN

Stack Overflow用户

发布于 2019-08-07 01:59:58

来自超级用户接受答案

代码语言:javascript
运行
复制
sudo mysql -u root
use mysql;
update user set plugin='' where User='root';
flush privileges;
exit;
票数 25
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/28068155

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档