前面的示例,我们一直使用root用户登录本机(127.0.0.1或localhost)的MySQL数据库服务,而在实际的开发和应用场景中则会创建一些专用的账号进行操作,本文将讨论MySQL数据库用户及权限的管理。
用于登录MySQL数据库的“用户”包含两部分信息,一是用户名,如root;二是用户所在的服务器,如本机服务器地址就是127.0.0.1或localhost。如果需要远程访问数据库,则需要服务器IP、域名等服务器信息和对应的用户名。一个用户名可以在多个IP(主机)登录,比如,某一用户可以在本机登录,也可以远程登录。
创建用户时需要同时指定主机地址和用户名,格式如下。
create user <用户名>@<主机> identified by <密码>;
删除用户时,可以使用drop user语句,格式如下。
drop user <用户名>@<主机>;
create user和drop user语句中的要素包括:
创建用户后,可以使用grant语句指定操作权限,格式如下。
grant <权限> on<数据库>.<表>to <用户名>@<主机>;
其中:
下面给出了可以使用的权限:
下面的代码,会创建dba01用户,它只能在本机登录,登录密码为dba0123456,并拥有cdb_demo数据库所有的基本权限。
create user 'dba01'@'localhost' identified by 'dba0123456'; grant all on cdb_demo.* to 'dba01'@'localhost';
创建用户并分配权限后,可以测试使用dba01用户登录,登录后只能看到cdb_demo数据库及相关信息。
需要删除用户权限时,可以使用revoke语句,应用格式如下:
revoke <权限> on <数据库>.<表>from <用户名>@<主机名>;
参数设置可参考grant语句。