MySQL 8.0 参考手册  / 第 6 章 安全  / 6.1 一般安全问题  /  6.1.5 如何以普通用户运行MySQL

6.1.5 如何以普通用户运行MySQL

在 Windows 上,您可以使用普通用户帐户将服务器作为 Windows 服务运行。

在 Linux 上,对于使用 MySQL 存储库、RPM 包或 Debian 包执行的安装,MySQL 服务器 mysqld应由本地 mysql操作系统用户启动。作为安装的一部分包含的初始化脚本不支持由另一个操作系统用户启动。

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

  1. 如果服务器正在运行,请将其停止(使用mysqladmin shutdown)。

  2. 更改数据库目录和文件,以便 user_name有权在其中读取和写入文件(您可能需要以 Unix root用户身份执行此操作):

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

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

    如果 MySQL 数据目录中的目录或文件是符号链接,则chown -R可能不会为您遵循符号链接。如果没有,您还必须点击这些链接并更改它们指向的目录和文件。

  3. 以用户身份启动服务器user_name。另一种选择是以Unix用户身份启动mysqldroot并使用该 选项。mysqld启动,然后在接受任何连接之前 切换为以 Unix 用户身份运行。--user=user_nameuser_name

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

    [mysqld]
    user=user_name

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