文章目录
- 1 问题
- 2. 解决方案
- 3. 讨论
1 问题
你是 MySQL 的 DBA ,你目前只有 root
权限的账户,为确保安全性,你需要为别的用户单独创建一个账号用来连接 MySQL 服务器。
2. 解决方案
先使用 CREATE USER
和 GRANT
语句来新建和设置账号,再使用账号和密码连接到服务器。
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 USER
和 GRANT
语句中对应的主机信息进行修改即可。例如,如果你希望创建的用户后续从 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 服务端所在主机的信息,和上述创建用户账号时的主机信息要区分开。
- 这里
mysql
指的是 MySQL 数据库的客户端软件。 ↩︎