我刚刚在 Ubuntu 20.04 中安装了新的 mysql-server 和 Mysql Workbench。虽然需要使用sudo
root 身份登录,但服务器运行良好。然而,Mysql Workbench 拒绝连接到数据库服务器 (拒绝用户“root”@“localhost”访问)并且只有当我替换了原始根(如堆栈溢出答案),工作台最终接受了新的。究竟是什么导致了这个问题?
答案1
默认情况下,root 配置了unix_socket
身份验证。基本上来说,如果数据库用户(在本例中为 root)以这种方式配置,则它不使用密码。登录的唯一方法是您是同一个 unix/linux 用户。
因此,您的 mysql 工作台未以 root 身份运行,因此无法以 root 数据库用户身份登录。通过将身份验证方法更改为密码身份验证,您解决了问题,但可能使数据库更加不安全。
出于安全原因,根数据库用户通常会保留为 unix_socket 身份验证,而您只需创建具有所需权限的其他数据库用户即可。
这是一篇关于这个主题的好文章: https://mariadb.com/kb/en/authentication-plugin-unix-socket/