菜鸟学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 不可以使用网络登录