您的位置:首页 > 数据库 > MySQL

访问控制与安全管理(MYSQL)

2017-03-07 11:13 330 查看

一. 用户的账号管理

a) MYSQL所有的用户账号信息都存储在一个名为MYSQL的数据库中,这个数据库里有一个名为user的数据表,其包含了所有的用户账号。如图

b) 在对MYSQL的日常管理中,为避免恶意用户冒名顶替root账号操纵数据库,通常需要创建一系列具备适当权限的账号,而尽可能减少或者不用root账号登陆系统,以此来确保数据的安全访问。



二. 创建用户账号

a) 语法:CREATE USER user_specification [,..]

b) User_specification 的格式:

User IDENTIFIED BY [PASSWORD] ‘password’

| IDENTIFIED WITH auth_plugin [AS ‘auth_string’]

c) User: 指定创建的用户账号,其格式为 ’user_name’@’host_name’.这里的user_name是用户名, host_name 为主机名,即用户连接MYSQL时所在主机的名称。如果在创建过程中只给出账户中的用户名,而没指定主机名,则系统默认主机名为”%”,表示一组主机。

d) IDENTIFIED BY 子句: 用于指定用户账号对应的口令,若该账号无口令,则可省略此子句。

e) 可选项PASSWORD: 用于指定散列口令,若口令为明文,则忽略PASSWORD关键字。

f) Password: 指定用户账号的口令,在IDENTIFIED BY 关键字或PASSWORD关键字之后,给定的口令值可以是字母和数字组成的明文, 也可以是通过PASSWORD()得到的散列值。

g) IDENTIFIED BY子句:用于指定验证账号的认证插件。

h) Auto_plugin: 制定认证插件的名称。

i) 注意:

i. 使用创建用户的语句,需具备MYSQL的mysql数据库的INSERT权限或者全局CREATE USER 权限。

ii. 如果创建的用户已存在,则会报错

iii. 如果两个用户拥有相同的用户名和不同的主机名,MYSQL会视为他们为不同用户并允许为其分配不同的权限

iv. 新创建的用户拥有的权限极少,可登录MYSQL,可使用无需权限的操作。

j) 举例:

添加两个新用户,zhangsan和lisi,其主机名均为localhost。Zhangsan的口令为明文“123”, lisi的口令为对应明文“456”的散列值。





三. 删除用户

a) DROP USER user[, user]….

b) 其可用于删除一个或者多个用户,并消除其权限

c) 在删除操作中,如果没有明确的给出账户的主机名,则该注聚名会被默认为%

d) 用户的删除不会影响到他们创建的表,索引,以及其他数据库对象,这是因为MYSQL并没有记录是谁创建了这些对象。

e) 举例:删除前面创建的对象



四. 修改用户账号

a) 语法:RENAME USER old_nuser TO new_user [, …]

b) Old_user: 系统中已存在的MYSQL账号

c) New_user: 新的用户账号

d) 注意:

i. RENAME语句只用于对原有MYSQL账户进行重命名。

ii. 若要使用该语句,需具备对mysql数据库的UPDATE权限或者全局CREATE USER权限

iii. 倘若旧账户不存在或者新账户已存在,则语句执行会报错

e) 举例:将zhangsan修改为wangwu



五. 修改用户口令

a) SET PASSWORD [FOR user] = PASSWORD (‘new_password’) | ‘encrypted password’

b) FOR子句:指定欲修改口令的用户。该子句为可选项,如不加该子句,则表示修改当前用户的口令。

c) PASSWORD (‘new_password’):表示用函数PASSWORD()设置新口令

d) Encrypted password: 表示已被函数PASSWORD加密过的口令值。

e) C与d只能选择一项,且必须选择一项进行修改口令
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: