公众号merlinsea
- Mysql数据库的自带的用户权限user表介绍
1、user表的表结构
mysql数据库中有一个user表,这个表中记录了每一个用户登陆这台数据库服务器的权限和密码信息。(Host+User)作为主键,即每个用户登陆改mysql服务器的客户端的ip是有限制的,ip不同可能密码也不同。
mysql> show create table user\G *************************** 1. row *************************** Table: user Create Table: CREATE TABLE `user` ( `Host` char(60) COLLATE utf8_bin NOT NULL DEFAULT '', `User` char(32) COLLATE utf8_bin NOT NULL DEFAULT '', `Select_priv` enum('N','Y') CHARACTER SET utf8 NOT NULL DEFAULT 'N', `Insert_priv` enum('N','Y') CHARACTER SET utf8 NOT NULL DEFAULT 'N', `Update_priv` enum('N','Y') CHARACTER SET utf8 NOT NULL DEFAULT 'N', `Delete_priv` enum('N','Y') CHARACTER SET utf8 NOT NULL DEFAULT 'N', `Create_priv` enum('N','Y') CHARACTER SET utf8 NOT NULL DEFAULT 'N', `Drop_priv` enum('N','Y') CHARACTER SET utf8 NOT NULL DEFAULT 'N', `Reload_priv` enum('N','Y') CHARACTER SET utf8 NOT NULL DEFAULT 'N', `Shutdown_priv` enum('N','Y') CHARACTER SET utf8 NOT NULL DEFAULT 'N', `Process_priv` enum('N','Y') CHARACTER SET utf8 NOT NULL DEFAULT 'N', `File_priv` enum('N','Y') CHARACTER SET utf8 NOT NULL DEFAULT 'N', `Grant_priv` enum('N','Y') CHARACTER SET utf8 NOT NULL DEFAULT 'N', `References_priv` enum('N','Y') CHARACTER SET utf8 NOT NULL DEFAULT 'N', `Index_priv` enum('N','Y') CHARACTER SET utf8 NOT NULL DEFAULT 'N', `Alter_priv` enum('N','Y') CHARACTER SET utf8 NOT NULL DEFAULT 'N', `Show_db_priv` enum('N','Y') CHARACTER SET utf8 NOT NULL DEFAULT 'N', `Super_priv` enum('N','Y') CHARACTER SET utf8 NOT NULL DEFAULT 'N', `Create_tmp_table_priv` enum('N','Y') CHARACTER SET utf8 NOT NULL DEFAULT 'N', `Lock_tables_priv` enum('N','Y') CHARACTER SET utf8 NOT NULL DEFAULT 'N', `Execute_priv` enum('N','Y') CHARACTER SET utf8 NOT NULL DEFAULT 'N', `Repl_slave_priv` enum('N','Y') CHARACTER SET utf8 NOT NULL DEFAULT 'N', `Repl_client_priv` enum('N','Y') CHARACTER SET utf8 NOT NULL DEFAULT 'N', `Create_view_priv` enum('N','Y') CHARACTER SET utf8 NOT NULL DEFAULT 'N', `Show_view_priv` enum('N','Y') CHARACTER SET utf8 NOT NULL DEFAULT 'N', `Create_routine_priv` enum('N','Y') CHARACTER SET utf8 NOT NULL DEFAULT 'N', `Alter_routine_priv` enum('N','Y') CHARACTER SET utf8 NOT NULL DEFAULT 'N', `Create_user_priv` enum('N','Y') CHARACTER SET utf8 NOT NULL DEFAULT 'N', `Event_priv` enum('N','Y') CHARACTER SET utf8 NOT NULL DEFAULT 'N', `Trigger_priv` enum('N','Y') CHARACTER SET utf8 NOT NULL DEFAULT 'N', `Create_tablespace_priv` enum('N','Y') CHARACTER SET utf8 NOT NULL DEFAULT 'N', `ssl_type` enum('','ANY','X509','SPECIFIED') CHARACTER SET utf8 NOT NULL DEFAULT '', `ssl_cipher` blob NOT NULL, `x509_issuer` blob NOT NULL, `x509_subject` blob NOT NULL, `max_questions` int(11) unsigned NOT NULL DEFAULT '0', `max_updates` int(11) unsigned NOT NULL DEFAULT '0', `max_connections` int(11) unsigned NOT NULL DEFAULT '0', `max_user_connections` int(11) unsigned NOT NULL DEFAULT '0', `plugin` char(64) COLLATE utf8_bin NOT NULL DEFAULT 'mysql_native_password', `authentication_string` text COLLATE utf8_bin, `password_expired` enum('N','Y') CHARACTER SET utf8 NOT NULL DEFAULT 'N', `password_last_changed` timestamp NULL DEFAULT NULL, `password_lifetime` smallint(5) unsigned DEFAULT NULL, `account_locked` enum('N','Y') CHARACTER SET utf8 NOT NULL DEFAULT 'N', PRIMARY KEY (`Host`,`User`) ) ENGINE=MyISAM DEFAULT CHARSET=utf8 COLLATE=utf8_bin COMMENT='Users and global privileges'
2、user表的参数说明
Host #可以登陆的客户端ip, %表示任意的客户端ip都可以登陆 User #用户名 Select_priv #查询权限 Insert_priv #插入权限 Delete_priv #删除权限 Create_priv #创建权限 Grant_priv #授权指令,指该用户是否拥有给其他用户授权的权限 authentication_string #登陆密码【这个是加密形式的密文】
3、查看root用户的权限
select * from user where User='root'\G
- 控制用户权限相关命令
说明点:下面的命令是用户root给其他普通用户的授权命令,即只有拥有了授权权限的的用户才能对其他普通用户授于增删改查的权限,通常而言只有root用户才能对普通用户进行授权!!!
1、创建用户【这里只创建用户但没有对其进行授予增删改查的权限】
语法:create user 'username'@'host' identifified by 'password'; #创建一个pig用户,并指定登录密码:pig123456,可以在任何一台远程主机都可以登录 #这样创建的pig用户由于没有授权增删改查权限,因此该用户登陆了也用不了数据库 create user 'pig'@'%' identified by 'pig123456'; #创建一个pig用户,并指定登录密码:为空,指定在120网段的机器登录 create user 'pig'@'120.%.%.%' identified by '';
2、查看pig用户的权限
select * from mysql.user where user='pig'\G show grants for 'pig'@'%';
3、删除用户
【注:需要指定用户名和终端ip】
drop user 'pig'@'%'; 或 delete from mysql.user where user='pig';
4、授权增删改查命令
语法: grant 权限1,权限2 on 数据库的哪张表 to '用户'@'host' identified by 'password'; 权限类型:all privileges【所有权限】,select【查询权限】,update【修改权限】,insert【插入权限】,delete【删除权限】 库表类型:*.*【所有库的所有表】,merlin.*【merlin库的所有表】,merlin.employee【merlin库的employee表】 对【现有】用户pig授予所有库所有表所有权限。 grant all privileges on *.* to 'pig'; flush privileges; 创建一个【新】用户dog授予merlin库的所有权限,登录密码dog123456,任何一台主机登录 grant all privileges on merlin.* to 'dog'@'%' identified by 'dog123456'; flush privileges; 创建一个【新】用户cat授予merlin库的employee表 查与修改权限,登录密码cat123456,任何一台主机登录 grant select,update on merlin.employee to 'cat'@'%' identified by 'cat123456' flush privileges;
5、撤销权限的命令
语法: revoke 权限1,权限2..... on 数据库对象 from '用户'@'host'; 回收pig用户的所有权限(注意:并没有回收它的登录权限) revoke all privileges on *.* from 'pig'@'%'; flush privileges; 回收pig用户的所有权限(并回收它的登录权限) delete from mysql.user where user='pig'; flush privileges;
关于leetcode算法训练营:
加我微信号私聊参加训练营~
本人用c++刷了800道左右的算法,java语言刷了600道左右的算法题,并对这些题做了详细的个人总结。本科期间系统学习了数据结构与算法课程,同时考研过程中写完了率辉主编的《2020年数据结构高分笔记》和《数据结构1000题》,看完的视频包括《mooc浙大数据结构国家精品课程》和《王道考研408数据结构课程》,《王道2019年算法题讲解视频》,最终以初试专业第三名进入了北理工软件工程专业。熟悉并掌握常见的数据结构,比如链表、数组、树、图、队列、堆栈等等,精通数据结构教材中的所有算法,比如常见的遍历算法、动态规划,递归,回溯,剪枝,并查集,最短路径,拓扑排序等等,所以快加入训练营吧,我们一起进步
奔跑的小梁,公众号:梁霖编程工具库算法训练营,快来参加