mysql用户权限与账号创建方法详解

发布时间:2020-12-03编辑:脚本学堂
有关mysql用户权限的相关知识,mysql权限表,mysql用户账号的创建规则,mysql用户权限级别,mysql用户权限操作相关问题等,需要的朋友参考下。

mysql用户权限与账号创建方法

一、mysql权限
1、mysql的权限系统主要用来验证用户的操作权限。

2、在mysql内部,权限信息存放在mysql数据库的granttable里。当mysql启动后,granttable里的信息会写入内存。

3、mysql 使用user name 加 host name 来作为标识符。
通过这种标识符,可以用来区分不同host上的相同的user name。

4、mysql 权限控制有2种策略:
1)根据密码是否正确来控制客户端的连接。
2)假设可以正常connect,server还可以检查每个satement是否有权限去执行。如果只有某张表的select 权限,就不能进行drop 操作。

5、如果用户的权限改变,当前已连接的会话用户不会受影响,下次登录才会生效。

二、mysql有关权限表的含义:
 

user:用户账号、全局权限
db:库级别权限
host:废弃
tables_priv:表级别权限
colums_priv:列级别权限
procs_priv:存储过程和存储函数相关的权限
proxies_priv:代理用户权限

三、mysql用户账号的创建规则
用户名@主机
用户名:16字符以内
主机:
主机名:www.test.com,mysql
ip:192.168.2.1
网络地址:192.168.0.0/255.255.0.0
通配符:%,192.168.%.%,%.test.com

四、mysql的用户权限级别
服务管理类:super
库:create
表:delete、alter
列:insert、select、update

更多级别可参考mysql官方文档

五、与权限相关的几个命令
 

grant 权限,... on [对象类型] db.{table|routine} to 'username'@'host' [indentified by 'password'];
revoke 权限,... on [对象类型] db.{table|routine} from 'username'@'host';
show grants for 'username'@'host';
create user 'username'@'host' [identified by 'password'];
drop user 'username'@'host';
rename user old_name to new_name;

六、权限的操作命令举例

查看当前数据库的所有用户:
 

select user,host,password from mysql.user;

给用户赋予super权限(super和all privileges都可以):
 

grant super on *.* to 'mysql'@'localhost';
grant all privileges on *.* to 'mysql'@'localhost';

删除用户的super权限(super和all privileges都可以):
 

revoke super on *.* from 'mysql'@'localhost';
revoke all privileges on *.* from 'mysql'@'localhost';

查看赋予用户的权限
 

show grants for 'mysql'@'localhost';

七、mysql的问题处理

1、mysql登录密码忘记时的恢复操作
启动mysql_safe时传递两个参数:
 

--skip-grant-tables      跳过授权表
--skip-networking       为了安全,防止网络登录

登录方式一:
修改/etc/init.d/mysql

登录方式二:
直接在my.cnf配置
 

[mysqld]
skip-grant-tables
skip-networking

而后修改密码:
通过更新授权表方式直接修改其密码,而后移除此两个选项重启服务器
 

update user set password=password('123456') where user='root'

2、客户端连接mysql数据库速度慢的问题
直接在my.cnf配置,关闭dns的反向解析参数
 

[mysqld]
skip-name-resolve