文章目录
MySQL数据控制语言 DCL
DCL (Data Control Language)
默认使用的都是root用户,超级管理员,拥有全部的权限。
但是,一个公司里面的数据库服务器上面可能同时运行着很多个项目的数据库。
所以,我们应该可以根据不同的项目建立不同的用户,分配不同的权限来管理和维护数据库。
创建用户
语法:
CREATE USER '用户名'@'主机名' IDENTIFIED BY '密码';
create user 'user1'@'localhost' identified by '123';
注:用户名、主机名和密码都应该加上单引号
关键字说明:
'用户名'
将创建的用户名
'主机名'
指定该用户在哪个主机上可以登陆,
如果是本地用户可用localhost,
如果想让该用户可以从任意远程主机登陆,可以使用通配符%
'密码'
该用户的登陆密码,密码可以为空,
如果为空则该用户可以不需要密码登陆服务器
具体操作:
创建user1用户,只能在localhost这个服务器登录mysql服务器,密码为123
create user 'user1'@'localhost' identified by '123';
创建user2用户可以在任何电脑上登录mysql服务器,密码为123
create user 'user2'@'%' identified by '123';
注:创建的用户名都在mysql数据库中的user表中可以查看到,密码经过了加密。
给用户授权
用户创建之后,没什么权限!需要给用户授权
语法:
GRANT 权限1, 权限2... ON 数据库名.表名 TO '用户名'@'主机名';
grant create,alter,insert,update,select on test.* to 'user1'@'localhost';
关键字说明:
GRANT…ON…TO
授权关键字
权限1, 权限2...
授予用户的权限,
如CREATE、ALTER、SELECT、INSERT、UPDATE、DELETE等,
如果要授予所有的权限则使用ALL。
数据库名.表名
该用户可以操作哪个数据库的哪些表。
如果要授予该用户对所有数据库和表的相应操作权限则可用表示,如.*
'用户名'@'主机名'
给哪个用户授权,要加上单引号。
与创建用户时的用户名和主机名要相同。
具体操作:
给user1用户分配对test中所有的表:创建表,修改表,插入记录,更新记录,查询
grant create,alter,insert,update,select on test.* to 'user1'@'localhost';
给user2用户分配所有权限,对所有数据库的所有表
grant all on *.* to 'user2'@'%';
撤销授权
语法:
REVOKE 权限1, 权限2... ON 数据库.表名 FROM '用户名'@'主机名';
revoke all on test.* from 'user1'@'localhost';
REVOKE…ON…FROM
撤销授权的关键字
权限1, 权限2...
用户的权限,如CREATE、ALTER、SELECT、INSERT、UPDATE、SELECT等,
所有的权限则使用ALL
数据库名.表名
对哪些数据库的哪些表,
如果要取消该用户对所有数据库和表的操作权限则可用*表示,如*.*
'用户名'@'主机名'
给哪个用户撤销,要加上单引号。
与创建用户时的用户名和主机名要相同。
具体操作:
撤销user1用户对test数据库所有表的操作的权限
revoke all on test.* from 'user1'@'localhost';
注:用户名和主机名要与创建时相同,各自要加上单引号
查看权限
语法:
SHOW GRANTS FOR '用户名'@'主机名';
具体操作:
查看user1用户的权限
show grants for 'user1'@'localhost';
注:usage是指连接(登陆)权限,建立一个用户,就会自动授予其usage权限(默认授予)。
删除用户
语法
DROP USER '用户名'@'主机名';
具体操作:
删除user2
drop user 'user2'@'%';
修改管理员密码
语法
mysqladmin -uroot -p password 新密码
回车后要输出原密码,才能更改成功。如果原密码不正确,则修改失败
注意:需要在未登陆MySQL的情况下操作,新密码不需要加上引号。
具体操作:
1) 将root管理员的新密码改成123456
mysqladmin -uroot -p password 123456
2) 要求输入旧密码
3) 使用新密码登录
mysql -uroot -p123456
修改普通用户密码
语法:
给指定的用户:SET PASSWORD FOR '用户名'@'主机名' = PASSWORD('新密码')
给当前用户:SET PASSWORD = PASSWORD('新密码')
注意:需要在登陆MySQL的情况下操作,新密码要加单引号。
具体操作:
1) 将'user1'@'localhost'的密码改成123456
set password for 'user1'@'localhost' =password('123456');
2) 使用新密码登录,老密码登录不了
mysql -uuser1 -p123456