菜鸟学Linux 第076篇笔记 mysql用户管理
包含内容
创建、删除、修改用户
授权、撤消授权用户
mysql用户密码忘记如何重置
User Management
用户
密码 password();加密机制MySQL独有的
用户名@主机
账号:认证
权限
授权
MySQL将授权表加载到内容进行管理
用户和权限表
user 用户账号、全局权限等
db 库级别的权限
host 现已经废弃
tables_priv 表级别权限
columns_priv 列级别权限
procs_priv 存储过程和存储函数相关的权限
proxies_priv 代理用户权限
MySQL用户账号
用户名@主机
用户名16字符以内
主机
主机名 www.mysky.com mysql
IP 192.168.11.122
网络地址 172.16.0.0/255.255.0.0
通配符 %任意字段任意个 _任意单个字符
192.168.%.%
%.mysky.com
--skip-name-resolve 跳过名称解析
权限级别
全局级别 SUPER,
库级别
SELECT * FROM db\G;
表级别 DELETE ALTER TRIGGER
列级别 SELECT, INSERT, UPDATE
存储过程和存储函数
临时表:内存表
heap: 16MB
触发器: 主动数据库
INSERT, DELETE, UPDATE
创建用户
CREATE USER 'user_name'@'hostname' [INDENTIFIED BY 'password'];
INSERT INTO mysql.user
FLUSH PRIVILEGES;
删除用户
DROP USER 'username'@'host';
修改用户名
RENAME USER older_name TO new_name (这个里边包含@主机哈)
授权
GRANT
GRANT ALL PRIVILEGES [ object_type ] ON db.* TO username@'%' [WITH with_option..] ;
object_type:
TABLE
| FUNCTION
| PROCEDURE
with_option:
GRANT OPTION
| MAX_QUERIES_PER_HOUR count
| MAX_UPDATES_PER_HOUR count
| MAX_CONNECTIONS_PER_HOUR count
| MAX_USER_CONNECTIONS count
count执行命令时要替换成数值
GRANT CREATE ON cactidb.* TO cactiuser@'%'; (创建权限)
GRANT INSERT ON cactidb.* TO cactiuser@'%'; (插入权限)
GRANT UPDATE(Age) ON cactidb.testtb TO cactiuser@'%'; (授权修改到列级别)
GRANT SUPER ON *.* TO cactiuser@'%';
(注意有些授权需要重新建立会话才可以使授权生效)
SHOW GRANTS FOR cactiuser@'%';
撤消授权
REVOKE SELECT ON cactidb.* FROM 'cactiuser'@'%';
(一般读权限可以给但写权限要慎重)
忘记管理员密码如何处理
1.关闭当前MySQL
# service mysqld stop
2.编辑启动脚本
# vim /etc/init.d/mysqld
在这里找到此行$bindir/mysqld_safe --datadir="$datadir"
在mysqld_safe后空格添加 --skip-grant-tables --skip-network
保存退出
3.启动mysqld
# service mysqld start
此时登录mysql时便不需要输入密码
4.进入数据库后修改mysql的root密码
UPDATE user SET Password=PASSWORD('1234') WHERE User='root';
(同时更改三个root密码)
5.修改好后停止mysqld,然后再将刚刚加的字符去除,再重新启动即恢复正常
(此时便可使用新配置的mysql密码来进行登录mysql服务器)
SET PASSWORD FOR 'root'@'localhost'=PASSWORD('1234');
(注意在使用了跳过权限控制选项情况下,此条语句不可修改用户密码)
--skip-grant-tables 跳过权限控制
--skip-networking 不可以使用网络登录