因此,我在 BlueHost 拥有的 Web 服务器上有两个用户帐户。我们称它们为“root”和“user1”。当我登录到我的 root linux 帐户时,我尝试在“root”mysql 帐户上登录 mysql。然后我能够登录 mysql。那里一切都很好。
问题是,当我尝试使用完全相同的凭据(无。该 mysql 帐户上没有密码)从“user1”linux 帐户登录到 mysql“root”用户时,我收到一条错误消息,内容为:
ERROR 1045 (28000): Access denied for user 'root'@'localhost' (using password: NO)
我是否需要在 Linux 上更改“user1”用户的某些用户权限?
答案1
最近的 mysql/mariadb 服务器有一个基于插件的身份验证系统,例如:
MariaDB [(none)]> select user,host,password,plugin from mysql.user limit 1;
+------+-----------+-------------------------------------------+-------------+
| user | host | password | plugin |
+------+-----------+-------------------------------------------+-------------+
| root | localhost | | unix_socket |
+------+-----------+-------------------------------------------+-------------+
在此配置中,root@localhost 的访问权限仅授予 unix 用户“root”,您的真实用户 ID 将被发送到 mysql 服务器,并且只有当它与请求的 mysql 用户匹配时才授予登录权限。
为了使“user1”能够登录到 mysql 服务器,您需要执行以下任一操作:
将根身份验证改回“正常”登录/密码身份验证(小心,它将破坏大多数自动脚本、logrotate、服务启动/停止等)。
ALTER USER root@localhost identified with 'mysql_native_password'; SET PASSWORD = password('foo');
使用 unix_socket auth: 创建一个 mysql user1,
CREATE USER user1 IDENTIFIED VIA unix_socket;
并赋予他一些 root 访问权限GRANT ALL WITH GRANT OPTION ON *.* TO user1@localhost;