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_name
user_name
运行,直到接受任何连接。 -
要在系统启动时自动以给定的用户启动服务器,请将用户名称添加到
[mysqld]
组中的/etc/my.cnf
选项文件或服务器数据目录中的my.cnf
选项文件的user
选项。例如:[mysqld] user=user_name
如果您的Unix机器本身不安全,您应该将MySQL root
账户的密码在授权表中分配。否则,任何拥有该机器登录账户的用户都可以使用mysql 客户端,带有--user=root
选项,并执行任何操作。 (总之,应该将MySQL账户的密码分配,尤其是在服务器主机上存在其他登录账户时。)请参阅第2.9.4节,“初始MySQL账户安全”。