TCL(Transaction Control Language):事务控制语言。就是对mysql中的各种权限,以及账户密码等进⾏操作的语句。
1、创建用户
语法:
create user '⽤户名'@'主机名' identified by '密码';
create user 'root'@'localhost' identified by '123456';
创建了⼀个⽤户,其实就是在mysql数据库中的user表中,插⼊了⼀条记录⽽已。
2、赋予权限
注:创建好的用户没有权限
# grant 权限1,权限2 ..... on 某个数据库中的⼀些表 to '⽤户名'@'主机名'
# grant insert,update,select on `sql`.* to 'laoyan'@'localhost';
# 如果想创建⼀个新的超级管理员,赋予超级权限,可以使⽤如下的⽅式
# all privileges 所有权限的意思
# *.* 第⼀个* 所有数据库,第⼆个* 所有表
# MySQL8.0版本前写法
grant all privileges on *.* to 'laoyan'@'localhost' identified by '123456' with grant option;
-- 8.0之前版本: grant all privileges on *.* to 'root'@'%' identified by '123456' with grant option;
# 8.0后版本,创建用户
create user 'laoyan'@'localhost' identified by '123456';
# 赋权限
grant all privileges on *.* to 'laoyan'@'localhost' with grant option;
# 撤销权限
revoke 权限名 [,权限名.....] on dbname.* from username@ip
# 刷新权限
flush privilages;
注:当图形化界面链接MySQL时若因为版本问题报错,则
# 修改密码永不过期:
ALTER USER 'root'@'localhost' IDENTIFIED BY 'root' PASSWORD EXPIRE NEVER;
# 更新一下用户的密码校验规则
ALTER USER 'root'@'localhost' IDENTIFIED WITH mysql_native_password BY 'root';
# 刷新权限
FLUSH PRIVILEGES;
# 重置密码:
alter user 'root'@'localhost' identified by 'root';
3、如何修改mysql允许远程登录
1)该表法
在图形化界面mysql数据库中的user表中,修改数据,重启mysql服务。
2)通过TCL语句修改
# %的意思是允许所有的IP访问mysql服务。
-- 创建用户
create user 'root'@'%' identified by 'root';
-- 赋权限
grant all privileges on *.* to 'root'@'%' with grant option;
flush privileges;// 刷新权限,让其⽴即起作⽤。
'root'@'localhost'
'root'@'%' 是一个用户吗? 不是同一个用户