use mysql(进入mysql库)
创新互联为企业级客户提高一站式互联网+设计服务,主要包括网站建设、网站设计、成都APP应用开发、成都微信小程序、宣传片制作、LOGO设计等,帮助客户快速提升营销能力和企业形象,创新互联各部门都有经验丰富的经验,可以确保每一个作品的质量和创作周期,同时每年都有很多新员工加入,为我们带来大量新的创意。
select user,host from user(查看你有哪些用户)
show grants for '用户名'@'***(该用户host)';(查看该用户有哪些权限)
查看MySQL用户权限: show grants for 你的用户比如: show grants for root@'localhost';Grant 用法GRANT USAGE ON *.* TO 'discuz'@'localhost' IDENTIFIED BY PASSWORD '*C242DDD213BE9C6F8DA28D49245BF69FC79A86EB'; GRANT ALL PRIVILEGES ON `discuz`.* TO 'discuz'@'localhost'; 我先按我的理解解释一下上面两句的意思 建立一个只可以在本地登陆的 不能操作的用用户名 discuz 密码为 ***** 已经加密了的 然后第二句的意思是 ,给这个discuz用户操作discuz数据库的所有权限使用GRANTGRANT命令用来建立新用户,指定用户口令并增加用户权限。其格式如下: mysql GRANT privileges ON what - TO user [IDENTIFIED BY password] - [WITH GRANT OPTION]; 正如你看到的源码天空 ,在这个命令中有许多待填的内容。让我们逐一地对它们进行介绍,并最终给出一些例子以让你对它们的协同工作有一个了解。 privileges是一个用逗号分隔的你想要赋予的MySQL用户权限的列表。你可以指定的权限可以分为三种类型: 数据库/数据表/数据列权限: Alter: 修改已存在的数据表(例如增加/删除列)和索引。 Create: 建立新的数据库或数据表。 Delete: 删除表的记录。 Drop: 删除数据表或数据库。 INDEX: 建立或删除索引。 Insert: 增加表的记录。 Select: 显示/搜索表的记录。 Update: 修改表中已存在的记录。 全局管理MySQL用户权限: file: 在MySQL服务器上读写文件。 PROCESS: 显示或杀死属于其它用户的服务线程。 RELOAD: 重载访问控制表,刷新日志等。 SHUTDOWN: 关闭MySQL服务。 特别的权限: ALL: 允许做任何事(和root一样)。
1、mysql的权限是,从某处来的用户对某对象的权限。
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启动,增加选项不检查权限,登陆后修改密码,退出重启启动。
mysql中所有使用者的权限是记录在mysql这个数据库的users资料表中
所以你只要先use
mysql
再select
*
from
users
你可以看到所有的使用者权限
有关db的数据是记录在db(大小写要注意)这个数据表中
所以只要呼叫出db的资料
select
*
from
db
就可以看到你要的答案
或者你可以用
select
*
from
db
where
db='phplampdb'找出你要的答案
MySQL各种权限(共27个) (以下操作都是以root身份登陆进行grant授权,以p1@localhost身份登陆执行各种命令。) 1. usage 连接(登陆)权限,建立一个用户,就会自动授予其usage权限(默认授予)。 mysql grant usage on *.* to ‘p1′@’localho...
数据库的权限?应该是用户的权限,直接查询mysql数据库下users表,里面有记录。