可以这样讲,能否对数据库的账户进行基本的管理,区分"小白"和"老鸟"的一个衡量标准.
Mysql数据库管理系统中,root用户拥有最高权限(与Linux类似),但不能让每一名开发者都拥有这么高的权限,所以要对不同级别的使用者进行相应的授权.
Mysql的用户权限信息都存储在数据库mysql中的user表中;
坦率的讲…普通程序员,根本用不到这方面的知识
查看已有的数据库账户
- 1.登录数据库
mysql -uroot -p
- 2.进入mysql数据库
use mysql;
- 3.查看已有账户信息(可登录的主机ip,用户名,加密后的密码)
select host,user,authentication_string from user;
创建新用户:
语法:
- grant 权限列表 on 授权的数据(数据库,数据表) to "用户名"@"主机名" identify by "密码";
权限关键词 | 作用 | 级别 |
---|---|---|
create | 创建数据库 | 数据库级别操作(高) |
alter | 创建数据表 | 数据表级别操作(中) |
drop | 删除数据表 | 数据表级别操作(中) |
insert | 往表中插入数据 | 数据级别操作(低) |
update | 更新表中数据 | 数据级别操作(低) |
delete | 删除表中数据 | 数据级别操作(低) |
select | 读取表中数据 | 数据级别操作(低) |
示例:
grant all privileges on jd.* to "Mike"@"%" identify by "mike111";
最后刷新权限
flush privileges
将数据库jd的完整权限,授权给新用户Mike,新用户可从任何主机登录数据库,Mike的密码为"mike111"
撤销用户权限(root用户操作)
语法
- revoke 权限列表 on 授权的数据(数据库,数据表) from "用户名"@"主机名";
示例
revoke insert on jd.* from "Mike"@"%";
撤销用户"Mike"往数据表中插入数据的权限
- 最后刷新权限
flush privileges
修改账户密码("用户名和密码"都"区分"大小写):
用户无需登录,即可修改自己的密码(以为Mike修改密码为例):
- 打开终端,输入
mysqladmin -uMike -pmike321
- 回车
- 输入旧密码
- 新密码"mike321"生效
root用户修改下属用户的密码(需要root用户登录):
root改密码的本质是修改mysql数据库中user表中字段authentication_string
中的值
密码的密文由mysql的内置函数password产生,password函数可接收"明文密码"字符串,产生"密文字符串",root修改密码也就是先使用内置函数password产生密文,然后使用新密文替换旧密文.密码修改完成!
语法:
- update 表名 set authentication_string = password("新密码") where user = "用户名";
示例:
update user set authentication_string = password("mike321") where user="Mike";
最后刷新权限
flush privileges
删除用户(root权限):
简单方式
语法
- drop user "用户名"@"主机";
示例
drop user "Mike"@"%";
直接删user表中的记录(如果第一种删不掉,就用这种方式)
- 语法
delete from 表名 where user = "用户名";
示例
delete from mysql.user where user="Mike";