【问题标题】:How to change the root password on mysql server 8如何更改mysql服务器8上的root密码
【发布时间】:2021-05-04 23:34:43
【问题描述】:

我在 Ubuntu 20.04 上安装了一个新的 mysql server 8,我只是想设置 root 密码,这是我尝试安装的应用程序所必需的。我已经做了一个小时了,我发现的每个网站都说同样的话。这就是我正在做的:

mysql> ALTER USER 'root'@'localhost' IDENTIFIED BY 'test';
Query OK, 0 rows affected (0.01 sec)

mysql> flush privileges;
Query OK, 0 rows affected (0.01 sec)

然后我为了安全起见重启mysql-server,然后尝试登录:

mysql -u root -p
Enter password: 
ERROR 1698 (28000): Access denied for user 'root'@'localhost'

我不知道出了什么问题。我确实看到 root@localhost 的 authentication_string 是空的,这似乎不对。

编辑:

很明显,“更改密码”并不是真正的问题。这里正在发生其他事情。即使使用命令“sudo mysql_secure_installation”设置密码后,我也无法登录。

root@localhost 的“plugin”设置为“auth_socket”。我还不知道这意味着什么,但似乎已经让某个外部进程负责对该用户进行身份验证。

编辑2:

看起来 auth_socket 只是检查您是否以您在 mysql 上尝试登录的用户身份登录 linux。这意味着没有非 root linux 用户可以在 mysql 上以 root 身份登录。所以看来我必须删除这个 auth_socket 插件,然后切换到普通的 mysql 身份验证方法。有人知道在不破坏任何东西的情况下做到这一点的最佳方法吗?删除用户并重新创建它会破坏很多东西吗?

【问题讨论】:

  • "Query OK, 0 rows affected (0.01 sec)" 表示查询不工作,看看idetified by or username是否正确
  • @mahen3d 不正确。如果用户不存在,则会出现ERROR 1396 (HY000): Operation ALTER USER failed for 'nosuchuser'@'localhost' 形式的错误。 flush privileges 和重新启动不是必需的。你连接到同一台服务器吗?你能看看show create user root@localhost看看它是否被锁定/过期。
  • 希望对您有所帮助 - stackoverflow.com/a/42484420/9348637
  • 从操作系统的角度来看,您需要作为管理员执行此操作。否则,更改只会持续到您的 MySQL 会话。
  • 这是 show create user 给出的内容: CREATE USER 'root'@'localhost' IDENTIFIED WITH 'auth_socket' REQUIRE NONE PASSWORD EXPIRE DEFAULT ACCOUNT UNLOCK PASSWORD HISTORY DEFAULT PASSWORD REUSE INTERVAL DEFAULT PASSWORD REQUIRE CURRENT DEFAULT

标签: mysql


【解决方案1】:

终于搞定了。我是对的,问题出在身份验证插件上。将其更改为“mysql_native_password”允许我按预期设置密码。

sudo mysql -u root
UPDATE mysql.user SET plugin = 'mysql_native_password' WHERE User = 'root';
FLUSH PRIVILEGES;
QUIT;

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2012-02-06
    • 2015-12-14
    • 2012-06-18
    • 1970-01-01
    • 2016-02-04
    相关资源
    最近更新 更多