简述构成mysql权限控制步骤
1、grant语句
格式:grant select on 数据库.* to 用户名@登录主机 identified by “密码”
说明:
(1)grant all 赋予所有的权限
(2)demo.* 数据库 demo 中所有的表
(3)newuser 用户名
(4)@localhost 在本地电脑上的 mysql server 服务器
(5)identfified by ‘password’ 设置密码
增加一个用户test1密码为abc,让他可以在任何主机上登录,并对所有数据库有查询、插入、修改、删除的权限。首先用以root用户连入MYSQL,然后键入以下命令:
2、sql语句
代码如下
mysql>INSERT INTO user (host,user,password) VALUES(’192.168.206.%’,'high_vod’,PASSWORD(‘high_vod’));
mysql>INSERT INTO db
VALUES(’192.168.206.%’,'high_vod’,'high_vod’,'Y’,'Y’,'Y’,'Y’,'Y’,'Y’,'N’,'Y’,'Y’,'Y’,'Y’,'Y’,'Y’,'Y’,'Y’,'Y’,'Y’,'Y’,'Y’);
mysql>FLUSH PRIVILEGES;
查看用户权限
mysql> show grants for zx_root;
赋予权限
mysql> grant select on dmc_db.* to zx_root;
回收权限
mysql> revoke select on dmc_db.* from zx_root; //如果权限不存在会报错
设置权限时必须给出一下信息
1,要授予的权限
2,被授予访问权限的数据库或表
3,用户名
grant和revoke可以在几个层次上控制访问权限
1,整个服务器,使用 grant ALL 和revoke ALL
2,整个数据库,使用on database.*
3,特点表,使用on database.table
4,特定的列
5,特定的存储过程
2、mysql的权限采用白名单策略,指定用户能做什么,没有指定的都不能做。
3、权限校验分成两个步骤:
a、能不能连接,检查从哪里来,用户名和密码,常见错误 ERROR 1045 (28000): Access denied for user ...
b、能不能执行操作,粒度从粗到细,分别为:mysql.user, mysql.db, msql.tables_priv, mysql.columns_priv, mysql.proc_priv。
需要注意的是,这些表各有分工,但是在权限分配上有一定的重合。
可以这样理解,mysql 先检查对大范围是否有权限,如果没有再到小范围里去检查。比如:先检查对这个数据库是否有select权限,如果有,就允许执行。如果没有,再检查对表是否有select权限,一直到最细粒度,也没有权限,就拒绝执行。举例来说:要检查张三能否控制一个团,我只要先检查张三能否控制一个军,如果可以,就是有权限,如果不行,再检查张三能否控制一个师。因此,粒度控制越细,权限校验的步骤越多,性能越差,需要考虑。
4、mysql服务启动之后,就会把权限有关的表的数据读到内存中,对权限做的修改,是否会即时生效?要看情况,手动修改表数据,需要 flush privileges
5、创建用户 create user,修改密码 set password,注意 alter user只是设置密码过期,可以登录,但是不能执行任何操作,必须从新设置密码,删除用户 drop user
6、host+user 标示唯一的一个用户,也就是说都叫张三,从不同地方来的张三是两个用户,他们有不同的权限。
7、那么问题来了,表中有两条记录:'root'@'192.168.1.101' 和 'root'@'%', 现在root来登录,mysql 怎么匹配呢?认为是哪个root呢?
mysql 对用户进行了排序,先对host排序,再对user排序,小范围在前面,大范围在后面,从上往下匹配。
8、权限授予,grant 权限 on 对象 to 用户@哪里来 identified by 密码
9、收回权限,revoke 权限 on 对象 from 用户@哪里来,注意revoke 必须要与grant 对应,也就是说,只能收回授予的权限。
10、那么问题来了,我授予张三 select的权限,现在revoke all privileges 也不能收回张三select的权限,因为没有对张三 grant all privileges,怎么解决这个问题?
使用 revoke all privileges,grant option from user
11、权限级别:从某台主机来的某个用户,对某个数据库中某个表的某些列的某部分记录,是否有权限。
12、全局:对象是mysql服务的所有数据库,包含服务级的管理权限,比如showdown
13、数据库:对象是某一个数据库
14、表:对象是数据库中某个表
15、列:对象是表中的某个列,比如:grant select (name) on xxx to xxx
16、程序:对象是存储过程和方法。
17、information_scheme,数据库和表是存放数据的,那么谁来存放 数据库和表这些信息呢? information_scheme 就是记录数据库和表的,需要注意的是,infromation_scheme没有对应的物理文件,它是mysql在内存中维护的。
18、权限设定原则:
a、尽量缩小权限
b、按业务,分离用户,不同的业务对应不同的用户
c、避免权限粒度太细,因为mysql权限检查,会影响性能。
19、文件泄密,linux下mysql客户端执行的操作记录在文件 ~/.mysql_history中,输出重定向/dev/null
20、密码丢失怎么办?
a、mysql启动,增加选项重置密码
b、mysql启动,增加选项不检查权限,登陆后修改密码,退出重启启动。
1、mysql检查user权限表中的权限信息,匹配user、host字段值,查看请求的全局权限是否被允许,如果找到匹配结果,操作被允许执行,否则进行下一步。
2、mysql检查db权限表中的权限信息,匹配user、host字段值,查看请求的数据库级别的权限是否被允许,如果找到匹配结果,操作被允许执行,否则进行下一步。
3、mysql检查tables_priv权限表中的权限信息,匹配user、host字段值,查看请求的数据库级别的权限是否被允许,如果找到匹配结果,操作被允许执行,否则进行下一步。
4、mysql检查columns_priv权限表中的权限信息,匹配user、host字段值,查看请求的数据库级别的权限是否被允许,如果找到匹配结果,操作被允许执行,否则返回错误信息。
MySQL 中的内存授权表的作用是什么
作用是内存的大小可通过My.cnf中的max_heap_table_size指定。MySQL的授权系统是通过MySQL数据库中的五个表来实现的,这些表有user、db、host、tables_priv和columns_priv。这些表的用途各有不同,但是有一点是一致的,那就是都能够检验用户要做的事情是否为被允许的。
如何使用MYSQLUSER创建和管理MySQL用户MYSQLUSER
如何使用MYSQL_USER创建和管理MySQL用户?MySQL是一个广泛使用的关系型数据库管理系统。在MySQL中,用户管理是一个重要的任务,因为只有授权的用户才能访问和修改MySQL数据库。本文将介绍如何使用MYSQL_USER创建和管理MySQL用户。步骤1:登录MySQL 您需要以管理员身份登录MySQL。您可以在终端中输入以下命令:mys...
请问,linux下mysql创建用户,具有所有数据库所有表并且具有所有操作的...
默认root用户就具有所有的权限,你可以新建一个用户,使它拥有所有的权限,还可以指定从什么地方登陆。权限划分可以很细的,可以精确到table,像select这种简单的查看功能命令都可以限定。具体命令像create,grant等等可以找本书看看。用户访问权限:mysql.user 全局层级权限(global privileges)db 数据库层...
mySQL安全设置
在保障MySQL系统的安全性方面,首要任务是内部安全性,确保数据目录的访问安全。1.1 数据库文件的安全:确保数据库文件存储位置的访问权限严格控制,只允许授权的用户或程序进行读写操作,防止未经授权的访问和数据泄露。1.2 日志文件的安全:日志记录是监控系统活动的重要工具,应设置合适的访问权限,仅允许...
mysql的静态表和动态表的区别,MyISAM和InnoDB的区别
MyISAM是MySQL的默认数据库引擎(5.5版之前),由早期的ISAM(Indexed Sequential Access Method:有索引的顺序访问方法)所改良。虽然性能极佳,但却有一个缺点:不支持事务处理(transaction)。不过,在这几年的发展下,MySQL也导入了InnoDB(另一种数据库引擎),以强化参考完整性与并发违规处理机制,...
故障排除解决MySQL无法建立数据库的问题mysql不能建数据库
【故障排除】解决MySQL无法建立数据库的问题 在使用MySQL建立数据库时,有时会遇到无法建立的问题,这可能是因为多种原因所致。本文将为您介绍几种可能的原因,并提供对应的解决方法。1.权限不足 在MySQL中,建立数据库需要有足够的权限。如果当前用户没有足够的权限,则无法建立数据库。解决该问题的方法...
super 有哪些权限 mysql
项目上 MySQL 还原 SQL 备份经常会碰到一个错误如下,且通常出现在导入视图、函数、存储过程、事件等对象时,其根本原因就是因为导入时所用账号并不具有SUPER 权限,所以无法创建其他账号的所属对象。ERROR 1227 (42000) : Access denied; you need (at least one of) the SUPER privilege(s) for ...
如何安全的配置和应用MySQL数据库_MySQL
MySQL已经成为当前网络中使用最多的数据库之一,特别是在Web应用上,它占据了中小型应用的绝对优势。这一切都源于它的小巧易用、安全有效、开放式许可和多平台,更主要的是它与三大Web语言之一——PHP的完美结合。 但不幸的是,一个缺省安装的MySQL,会因为root密码为空及程序漏洞导致被溢出,使得安装MySQL的服务器成为被...
MySQL无法设置角色权限mysql不能设置角色
MySQL无法设置角色权限 MySQL是一种流行的关系型数据库管理系统,广泛用于各种类型的应用程序。在MySQL中,用户可以使用角色来管理和分配权限,以便更好地保护数据库的安全性。然而,有时候我们会遇到MySQL无法设置角色权限的情况,本文将分析这个问题并提供解决方案。问题描述 当我们使用MySQL创建角色并为该角色...
mysqlroot用户指定连接IP
一、允许root用户在任何地方进行远程登录,并具有所有库任何操作权限,具体操作如下:在本机先使用root用户登录mysql: mysql -u root -p"youpassword" 进行授权操作:mysql>GRANT ALL PRIVILEGES ON *.* TO 'root'@'%' IDENTIFIED BY 'youpassword' WITH GRANT OPTION;重载授权表:FLUSH PRIVILEGES;...
革尚木香: MySQL管理员应该知道如何设置MySQL用户账号,指出哪个用户可以连接服务器,从哪里连接,连接后能做什么.MySQL 3.22.11开始引入两条语句使得这项工作更容易做:GRANT语句创建MySQL用户并指定其权限,而REVOKE语句删除权限...
恩施市18683444944: 如何给mysql用户分配权限 - ?
革尚木香: 查看用户权限 mysql> show grants for zx_root; 赋予权限 mysql> grant select on dmc_db.* to zx_root; 回收权限 mysql> revoke select on dmc_db.* from zx_root; //如果权限不存在会报错 设置权限时必须给出一下信息1,要授予的权限2,被授予访问权限的数据库或表3,用户名 grant和revoke可以在几个层次上控制访问权限1,整个服务器,使用 grant ALL 和revoke ALL2,整个数据库,使用on database.*3,特点表,使用on database.table4,特定的列5,特定的存储过程
恩施市18683444944: 怎么设置权限,控制MYSQL数据库资料的导出 - ?
革尚木香: 用ROOT账户登陆(有权限对整个数据库操作的账户)点权限设置,然后添加一用户 .在Database for user 那里选择Create database with same name and grant all privileges 如果只是想指定它对其中一数据库有管理权限就不要选择全局权限中的任何一项 ,点执行 完成创建 ,下面就是新建一数据库,在点权限设置 ,在“按数据库指定权限”那里把你刚新建的数据库选择上,点执行就可以了!这样你新建的账户只对该数据库有完全控制的权限,对其他用户也没访问权限!
恩施市18683444944: mysql怎么设置用户权限? - ?
革尚木香: 增加一个用户test1 密码为abc,让他可以在任何主机上登录,并对所有数据库有查询、插入、修改、删除的权限.首先用以root 用户连入MySQL,然后键入以下命令:mysql>grant select,insert,update,delete on *.* to test2@localhost identified by ...
恩施市18683444944: 如何给MySql创建连接用户并授权 - ?
革尚木香: 一般在为MySql创建用户时建议使用GRANT前台命令,当然如果对我们开发者而言,方法还有很多种,比如使用INSERT命令,甚至是直接修改mysql user数据表,但仍然建议按照MySQL规范去授权账户.因为它太容易忘记,特别整理方便参考...
恩施市18683444944: 如何设置mysql用户的权限 - ?
革尚木香: 用户管理 mysql>use mysql; 查看 mysql> select host,user,password from user ; 创建 mysql> create user zx_root IDENTIFIED by 'xxxxx'; //identified by 会将纯文本密码加密作为散列值存储 修改 mysql>rename user feng to newuser;//mysql 5之后可...
恩施市18683444944: 如何给mysql下的用户添加权限 - ?
革尚木香: GRANT [ALL|SELECT|UPDATE|..] ON dbname.tablename TO 'username'@'host_ip' IDENTIFIED BY 'password'
恩施市18683444944: 如何在MySQL中创建用户以及授权 - ?
革尚木香: mysql中可以给你一个用户授予如select,insert,update,delete等其中的一个或者多个权限,主要使用grant命令
恩施市18683444944: mysql identified怎么用 - ?
革尚木香: 1、用管理员登陆mysql;2、创建数据库create database db01;3、添加用户和用户权限:Mysql添加用户使用可以对mysql数据库用户表有操作权限的用户名登陆mysqlinsert into user(Host,User,Password) values('%','name','password');如果...
恩施市18683444944: mysql 怎么设置本机访问权限 - ?
革尚木香: 方法/步骤1 在未配置MySQL之前,根据MySQL服务端的信息,用navicate客户端进行连接测试,如图一、图二所示2 在MySQL所在机器上登录root用户,如图三e799bee5baa6e78988e69d8331333361306462所示3 切换到mysql库,并查看user...