mysql服务器进程在启动的时候会读取这6张表,并在内存中生成受权表,因此这几个文件是直接加载进内存的。mysql
之后后续的任何用户登陆及其访问权限的检查都经过检查这6张表来实现的。经过访问内存上所生成的结构信息来完成。sql
user :包含用户帐号、全局权限以及其余的非权限字段数据库
db :数据库级别权限的定义服务器
host :废弃!网络
tables_priv :表级别权限ide
columns_priv :列级别权限函数
procs_priv :存储过程和存储函数相关的权限spa
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,把添加的那两行删除
再从新启动服务,就能够登录了