文章目录

  • 1 问题
  • 2. 解决方案
  • 3. 讨论



1 问题

你是 MySQL 的 DBA ,你目前只有 root 权限的账户,为确保安全性,你需要为别的用户单独创建一个账号用来连接 MySQL 服务器。

2. 解决方案

先使用 CREATE USERGRANT 语句来新建和设置账号,再使用账号和密码连接到服务器。

3. 讨论

连接到 MySQL 服务器需要用户名和密码。你可能还会需要指定 MySQL 服务器运行所在的主机名。如果你不显式指定连接参数,那么 mysql 1 客户端会使用默认值。例如:如果没有显式指定主机名,那么 mysql 客户端假定服务器运行于本地主机。

下面命令显示了应该如何使用 mysql 客户端程序来连接服务器,然后使用相应语句实现账户创建以及为该账户赋予访问名为数据库 cookbook 的权限。mysql 客户端程序后的 -h localhost 用于指定要连接的是运行于本地的服务端程序; -u root 用于指定使用 root 用户进行连接; -p 用于提示用户进行密码输入。

mysql> CREATE USER 'cbuser'@'localhost' IDENTIFIED BY 'cbpass';
Query OK, 0 rows affected (0.09 sec)
mysql> GRANT ALL ON cookbook.* TO 'cbuser'@'localhost';
Query OK, 0 rows affected (0.01 sec)
mysql> quit
Bye

上述语句表示:

  • 先创建一个名为 cbuser 的用户,该用户后续将从 localhost 即本机登录 MySQL 服务端,该用户的登录密码是 cbpass
  • 接着为后续计划从 localhost 上登录 MySQL 服务端的用户 cbuser 赋予操作 cookbook 数据库中所有数据表的权限即 ALL

如果你希望创建的用户是从本地以外的主机连接 MySQL 服务端,那么只需要将上述 CREATE USERGRANT 语句中对应的主机信息进行修改即可。例如,如果你希望创建的用户后续从 myhost.example.com 来连接 MySQL 服务端,那么上述语句可修改如下:

mysql> CREATE USER 'cbuser'@'myhost.example.com' IDENTIFIED BY 'cbpass';
mysql> GRANT ALL ON cookbook.* TO 'cbuser'@'myhost.example.com';

最后,你就可以使用上述创建的用户登录 MySQL 服务端了:

mysql -h localhost -u cbuser -p
Enter password: cbpass

需要注意的是,这里 -h 后指定的是 MySQL 服务端所在主机的信息,和上述创建用户账号时的主机信息要区分开。


  1. 这里 mysql 指的是 MySQL 数据库的客户端软件。 ↩︎