MySQL学习笔记(二)-添加用户,查看权限,授权
MySQL入门教程
一.添加用户
首先要说明的是,MySQL的用户账号存储在mysql数据库下的user表中。我们可以通过查看该表的内容查看目前有哪些用户。
添加用户可以使用CREATER USER命令,命令格式为:
CREATER USER user_account IDENTIFIED BY password;
user_account表示 mysql特定的username格式,格式是‘username’@‘hostname’, password就是要创建的用户账号的秘密。例如我们想创建一个bridgewise用户,密码为’bw123456’,只允许通过本地访问。
如果你想创建一个账户可以通过任何host连接本数据库,你只需要使用 % 通配符当做host,格式如下:CREATER USER [email protected]’%’ IDENTIFIED BY password。mysql支持创建账户名相同,但是host不同的账户,例如我在创建一个bridgewisez用户,密码为‘bw123456’,但是可以通过任何host连接,只需要输入以下密令即可:’CREATE USER [email protected]’%’ IDENTIFIED by ‘bw123456’;
这里有一点需要大家注意,就是user_account由两部分组成,username和host,一般情况下这两部分是不需要加引号括起来的,例如[email protected]。但是如果有特殊字符,
例如username中有空格或者 ‘-’ 字符,就需要用引号括起来,或者hostname中有 ‘.’ 或者 ‘%’ 通配符,也需要用引号括起来,例如这种’test-user’@’%.com’,必须用引号括起来。还有一点需要注意的是当user_account中省略了@及其后面的host内容,如 bridgewise 这就等价于 [email protected]’%’ .下面的图片就是再次创建一个用户名为bridgewise,host省略的账户。
如果我们创建的用户存在,MySQL会弹出错误提示。并且我们利用CREATE USER语句创建的用户是没有任何权限的,只是能够连接数据库。查看权限和授权在下面会继续讲解。
二.查看权限和授权
查看一个用户的权限需要使用 SHOW GRANTS FOR 语句。格式如下: SHOW GRANTS FOR user_account。例如我要查看bridgewise用户的权限。
因为我没有指定host,所以查看的是可以从任何host访问本地数据库的bridgewise用户(在上面的例子我创建了两个bridgewise用户,一个是localhost,一个是’%’),结果中的*.* 表示这个用户目前没有任何权限。
如果需要给用户授权,需要用到 GRANT 语句,格式如下:
GRANT privilege,[privilege],… ON privilege_level
TO user [IDENTIFIED BY password]
[REQUIRE tsl_option]
[WITH [GRANT_OPTION | resource_option]];
详细讲解:
- 授予用户一个或多个权限使用GRANT关键字,如果需要授予多个权限,权限之间需要用逗号隔开.
- 需要指明权限级别,数据库权限级别,分为global( * . * ),database( database.* ), table ( database.table)和column levels。如果你试用column权限级别,你必须在每个权限后面指明一个或一些逗号隔开的column。
- 指明你想要授予权限的用户。如果用户已经存在,则修改其权限,如果用户不存在,将会新建一个用户。可选语句IDENTITIED BY就是为了让我们为用户设置一个新密码。
- 然后,指定用户是否必须通过SSL、X059等安全连接连接到数据库。
- 最后,可选语句 WITH GRANT OPTION允许你授予其他用户你拥有的特权。另外,你可以利用WITH语句分配数据库服务器资源。例如设置用户每小时可以使用多少连接或语句。这在共享环境中很有作用。
下面通过一些例子来说明GRANT语句如何使用。
MySQL GRANT EXAMPLE
给[email protected]用户授予所有权限:
ON*.* 语句表示权限级别为global。WITH GRANT OPTION 语句表示允许[email protected]用户授权给其他用户。
然后用SHOW GRANTS FOR语句查看结果。
然后在重新赋予[email protected]在mysql数据库级别下的所有权限。可以如图操作。
再次查看权限:
你可以赋予用户多个权限,例如赋予[email protected]’%'用户SELECT,INSERT和UPDATE权限。
下面的表格显示了可以GRANT(授权)和REVOKE(撤销)的权限及说明: