8.1.5 MySQL如何以普通用户身份运行
在 Windows 上,您可以使用普通用户账户运行服务器。
在 Linux 上,使用 MySQL 仓库或 RPM 包安装的 MySQL 服务器 mysqld 应该由本地 mysql 操作系统用户启动。使用其他操作系统用户启动不受支持的 init 脚本。
在 Unix (或 Linux,使用 tar.gz 包安装)中,MySQL 服务器 mysqld 可以由任何用户启动,但是为了安全原因,不要以 Unix root 用户身份运行。要将 mysqld 更改为以普通非特权 Unix 用户 user_name 运行,需要执行以下操作:
-
如果服务器正在运行(使用 mysqladmin shutdown)。
-
将数据库目录和文件更改为
user_name可以读写文件(您可能需要以 Unixroot用户身份执行):$> chown -R user_name /path/to/mysql/datadir如果不这样做,服务器在运行时无法访问数据库或表。
如果 MySQL 数据目录中的目录或文件是符号链接,
chown -R可能不会自动跟随符号链接。如果不这样做,你必须手动跟随这些链接,并将它们指向的目录和文件更改。 -
以用户
user_name启动服务器。另一个选择是,以 Unixroot用户启动mysqld,然后使用--user=选项。mysqld 启动后,切换到以用户user_nameuser_name运行,直到接受任何连接。 -
要在系统启动时自动以给定的用户启动服务器,请将用户名称添加到
[mysqld]组中的/etc/my.cnf选项文件或服务器数据目录中的my.cnf选项文件的user选项。例如:[mysqld] user=user_name
如果您的Unix机器本身不安全,您应该将MySQL root 账户的密码在授权表中分配。否则,任何拥有该机器登录账户的用户都可以使用mysql 客户端,带有--user=root 选项,并执行任何操作。 (总之,应该将MySQL账户的密码分配,尤其是在服务器主机上存在其他登录账户时。)请参阅第2.9.4节,“初始MySQL账户安全”。