用户管理

快捷创建一个全权限的用户

1
2
3
4
5
6
-- 创建并开启远程
create user 'kewen'@'%' identified by 'kw123456';
-- 授权全部权限
grant all on *.* to 'kewen'@'%';
-- 刷新
flush privileges;

执行完以上就完成了用户创建,不会再报密码的问题了,如果连接不上,检查服务器的防火墙或云服务器的安全策略

创建用户

1
2
3
4
-- 格式 create user 用户名@IP地址 identified by 密码;
-- @IP地址 可以省略,默认为 % 即所有
create user 'kewen_ch'@'%' identified by 'ch123456';
create user kewen_ch identified by 'ch123456';

查询用户

1
2
3
4
5
-- 查询所有用户
select user,host,password from mysql.user; -- 或者 select user,host,password from mysql.user \G ; \G代表每一行转换为列,方便查看

-- 查询当前用户
select current_user(); -- 或 select user();

修改用户

1
2
3
4
5
6
7
8
9
10
--修改用户名
rename user 'kewen_ch'@'localhost' to 'kewen_ch2'@'localhost';
rename user 'kewen_ch' to 'kewen_ch2'; -- 等于 rename user 'kewen_ch'@'%' to 'kewen_ch2'@'%';

--修改密码
alter user 'kewen_ch'@'%' identified by 'ch123456';
-- 或者
set password for kewen_ch = password('123456');
--mariadb中下面的已经不能使用了会报错 View 'mysql.user' references invalid table(s) or column(s) or function(s) or definer/invoker of view lack rights to use them
-- update mysql.user set authentication_string=password('ch1234567') where user='kewen_ch' and host ='%';

忘记root密码

Mariadb已经支持了本地root用户免密码登录了,直接操作即可,若是老版本数据库,则可以使用以下方法

忘记了Mysql密码

1、停掉mysql服务  service mysql stop
2、修改/etc/my.cnf 文件,增加 skip-grant-tables ,作用是登陆是跳开密码校验

/etc/my.cnf

mariadb从服务器登录root已经不需要密码了,如果需要重置密码可以使用``

删除用户

1
2
drop user 'kewen_ch'; --等于drop user 'kewen_ch'@'%';
drop user 'kewen_ch'@'localhost' -- 删除IP为localhost的kewen_ch用户

授权

添加授权

1
2
3
4
5
6
7
--  grant 权限类型 on 数据库.表 to 用户@IP  

--所有权限
grant all privileges on *.* to 'kewen_ch'@'%';
grant all privileges on cDb.cTable to 'kewen_ch'@'%';
--查询权限
grant select,create,delete on cDb.cTable to 'kewen_ch'@'%';

mysql中用户的权限

权限类型 权限说明
All/All Privileges 代表全局或者全数据库对象级别的所有权限
Alter 代表允许修改表结构的权限,但必须要求有create和insert权限配合。如果是rename表名,则要求有alter和drop原表, create和insert新表的权限
Alter routine 代表允许修改或者删除存储过程、函数的权限
Create 代表允许创建新的数据库和表的权限
Create routine 代表允许创建存储过程、函数的权限
Create tablespace 代表允许创建、修改、删除表空间和日志组的权限
Create temporary tables 代表允许创建临时表的权限
Create user 代表允许创建、修改、删除、重命名user的权限
Create view 代表允许创建视图的权限
Delete 允许执行delete操作
Drop 代表允许删除数据库、表、视图的权限,包括truncate table命令
Select 允许执行select操作
Event 代表允许查询,创建,修改,删除MySQL事件
Execute 代表允许执行存储过程和函数的权限
File 代表允许在MySQL可以访问的目录进行读写磁盘文件操作,可使用的命令包括load data infile,select … into outfile,load file()函数
Grant option 代表是否允许此用户授权或者收回给其他用户你给予的权限,重新付给管理员的时候需要加上这个权限
Index 代表是否允许创建和删除索引
Insert 代表是否允许在表里插入数据,同时在执行analyze table,optimize table,repair table语句的时候也需要insert权限
Lock tables 代表允许对拥有select权限的表进行锁定,以防止其他链接对此表的读或写
Process 代表允许查看MySQL中的进程信息,比如执行show processlist, mysqladmin processlist, show engine等命令
Reference 是在5.7.6版本之后引入,代表是否允许创建外键
Reload 代表允许执行flush命令,指明重新加载权限表到系统内存中,refresh命令代表关闭和重新开启日志文件并刷新所有的表
Replication client 代表允许执行show master status,show slave status,show binary logs命令
Replication slave 代表允许slave主机通过此用户连接master以便建立主从复制关系
Show databases 代表允许执行show databases命令查看所有的数据库名
Show view 代表允许执行show create view命令查看视图创建的语句
Shutdown 代表允许关闭数据库实例,执行语句包括mysqladmin shutdown
Super 代表允许执行一系列数据库管理命令,包括kill强制关闭某个连接命令, change master to创建复制关系命令,以及create/alter/drop server等命令
Trigger 代表允许创建,删除,执行,显示触发器的权限
Update 允许执行update操作
Usage 是创建一个用户之后的默认权限,其本身代表连接登录权限。使用create user语句创建的用户,默认就拥有这个usage权限,但是除了能登录之外

查询授权

1
2
3
4
-- 查询指定人的授权
show grants for 'kewen_ch'@'%';
--查看登录人的授权
show grants;

撤销授权

1
2
-- revoke all privileges on 数据库.表 from '用户名'@'IP';
revoke all privileges on cDb.cTable from 'kewen_ch'@'%';

刷新

1
flush privileges;