重置数据库管理员本地密码 (知道原先密码)
- # mysqladmin -hlocalhost -uroot -p password
- #ENTER 旧密码
恢复数据库登录密码
- /etc/my.cnf
- [mysqld]
- skip_grant_tables #跳过授权表运行
- #validate_password_length=6
- #validate_password_policy=0
重启服务
- #mysql # 正常方式连接数据库
- >update mysql.user set authentication_string=
password(密码) where name=root and
- host=localhost;
- >flush privileges; #刷新权限
/etc/mycnf 注释掉 skip_grant_tables
重启服务
数据库授权相关操作
查看当前登录用户
>select user();
查看主机名 (默认 localhost)
>select @@hostname; #sql 命令中调用变量用 @@
当前登录用户已有的权限
>show grants;
查看授权用户
> select user,host from mysql.user;
删除授权用户
>drop user 用户名 @"客户端地址";
查看授权用户的权限
>show grants for 用户名 @"客户端地址";
权限撤销
>revoke 权限列表 on 数据库名. 表名 from 用户名 @"客户端地址";
通过对 mysql 下的表进行 update 操作撤销权限, 最后要 flush privileges; 刷新权限
管理员修改授权用户登录密码
>set password for 用户名 @""=password(" 密码 ");
授权用户修改自己的密码
>set password=password('密码');
授权数据库
>grant 权限列表 on 数据库名. 表名 to 用户 @客户端地址
identified by 密码 with grant option(是否有授权权限)
权限列表
all 所有
select 查看
insert 插入
update 修改
delete 删除
select,update(字段 1.. 字段 N)
#可百度查询更多的权限介绍
客户端地址
% 所有主机
192.168.4.% 一个网段
192.168.4.1 一个 ip
总结
1. 授权用户信息在 mysql 的不同表下, 以下是必须了解的表:
user 表: 授权用户的访问权限
db 表: 授权用户对已有数据库的访问权限
tables_priv: 授权用户对表的访问权限
columns_priv: 授权用户对字段的访问权限
2. 授权用户授权除了有 with grant option, 还要对 mysql.user 表有 insert 权限
3. 数据库管理员拥有所有权
4. 授权用户授权时权限要小于等于自身的权限
5. 权限撤销前提是之前有对目标进行定义, 不然会报错 no such defined