以标准用户身份运行 MySQL Workbench

以标准用户身份运行 MySQL Workbench

我已经安装了 mysql-server 和 mysql-workbench 包。一切似乎都运行良好,但当我尝试通过 mysql-workbench 连接到数据库时,却无法连接,除非我使用以下命令通过 cli 启动 mysql-workbench

sudo mysql-workbench

我查看了其他帖子,这些帖子说这种行为取决于给予 mysql 根用户的不同类型的身份验证(auth_socket),但如果我将根用户的身份验证更改为 mysql_native_pasword,我只能以超级用户身份启动 Workbench 才能连接到数据库服务器。

答案1

在 Linux 上,对于使用 MySQL 存储库或 RPM 包执行的安装,MySQL 服务器 mysqld 应由本地 mysql 操作系统用户启动。MySQL 存储库中包含的 init 脚本不支持由其他操作系统用户启动。

在 Unix 上(或使用 tar.gz 软件包执行安装的 Linux 上),任何用户都可以启动和运行 MySQL 服务器 mysqld。但是,出于安全原因,您应避免以 Unix 根用户身份运行服务器。要将 mysqld 更改为以普通的非特权 Unix 用户 user_name 身份运行,您必须执行以下操作:

如果服务器正在运行,请停止它(使用 mysqladmin shutdown)。更改数据库目录和文件,以便 user_name 有权读取和写入其中的文件(您可能需要以 Unix 根用户身份执行此操作):

shell> chown -R user_name /path/to/mysql/datadir

如果不这样做,服务器以 user_name 身份运行时将无法访问数据库或表。

如果 MySQL 数据目录中的目录或文件是符号链接,chown -R 可能不会为您跟踪符号链接。如果没有,您还需要跟踪这些链接并更改它们指向的目录和文件。

以用户 user_name 的身份启动服务器。另一种方法是以 Unix 根用户身份启动 mysqld,并使用 --user=user_name 选项。mysqld 启动后,在接受任何连接之前,切换到以 Unix 用户 user_name 的身份运行。

要在系统启动时自动以给定用户身份启动服务器,请通过在服务器数据目录中的 /etc/my.cnf 选项文件或 my.cnf 选项文件的 [mysqld] 组中添加用户选项来指定用户名。例如:

[mysqld]
user=user_name

如果您的 Unix 计算机本身不安全,则应在授权表中为 MySQL 根帐户分配密码。否则,任何在该计算机上拥有登录帐户的用户都可以使用 --user=root 选项运行 mysql 客户端并执行任何操作。(在任何情况下,为 MySQL 帐户分配密码都是一个好主意,但当服务器主机上存在其他登录帐户时尤其如此。)

文字来源于https://dev.mysql.com/doc/refman/8.0/en/changing-mysql-user.html。我不确定这是指 MySQL 用户还是 Ubuntu 用户。我希望这至少能有所帮助

答案2

你必须登录 mysql 并授予标准用户的权限

mysql> select * from mysql.user;

这将列出用户,

按照此帖子设置权限

如何授予 MySQL 数据库的所有权限

相关内容