mysql数据库之用户管理和权限
mysql服务器进程在启动的时候会读取这6张表,并在内存中生成授权表,所以这几个文件是直接加载进内存的。
以后后续的任何用户登录及其访问权限的检查都通过检查这6张表来实现的。通过访问内存上所生成的结构信息来完成。
user :包含用户账号、全局权限以及其他的非权限字段
db :数据库级别权限的定义
host :废弃!
tables_priv :表级别权限
columns_priv :列级别权限
procs_priv :存储过程和存储函数相关的权限
proxies_priv :代理用户权限
用户账号
用户名@主机
用户名:16字符以内
主机:主机名、IP、网络地址、通配符(%、_)
--skip-name-resolve :跳过主机名解析(在登录时使用)
权限级别
全局级别:
库级别
表级别
列级别
存储过程和存储函数
创建用户
create 权限 用户名@主机名 identified by "密码"
flush privileges; 重读授权表,读取用户信息
show grants for 用户名@'主机名'; 查看用户账户信息
修改管理员密码
退出并关闭mysql :service mysql stop
手动修改启动文件:/etc/init.d/mysql 修改第283行
添加:
--skip-grant-tables :跳过授权表
--skip-networking :跳过网络
启动mysql服务:service mysql start
use mysql :指定数据库
select User,Host,Password from user; :查看用户表
update user set Password=PASSWORD('密码') where User='root'; :手动修改密码
退出数据库,关闭服务!
修改/etc/init.d/mysql,把添加的那两行删除
再重新启动服务,就可以登陆了