023、用户管理和权限管理

* SQL分类

DDL:操作数据库和表

DML:增改删表中数据

DQL:查询表中数据

 DCL:管理用户 ---授权

* DBA:数据库管理员

一、管理用户

       1、添加用户:

        * 语法:CREATE USER '用户名'@'主机名' IDENTIFIED BY 密码';-    举例:

CREATE USER 'zhangsan'@'localhost' IDENTIFIED BY '123';---账户名:zhangsan,密码:123,只能通过本地登录

CREATE USER 'lisi'@'localhost' IDENTIFIED BY '123';

CREATE USER 'lisi'@'%' IDENTIFIED BY '123';---账户名:lisi,密码:123,能通过本地和任何外网登录

说明:数据库所有的用户都放在 文件夹 mysql   ->     user下:

023、用户管理和权限管理_第1张图片

CREATE USER 'zhangsan'@'localhost' IDENTIFIED BY '123';---账户名:zhangsan,密码:123,只能通过本地登录

CREATE USER 'lisi'@'localhost' IDENTIFIED BY '123';

CREATE USER 'lisi'@'%' IDENTIFIED BY '123';---账户名:lisi,密码:123,能通过本地和任何外网登录

FLUSH PRIVILEGES;---这个是保险的,非必须,目的是刷新

SELECT * FROM USER;

注意(在创建完用户之后,用cmd去登录创建的普通用户有时无法登录,并产生如下问题:

ERROR 1045 (28000): Access denied for user 'zhangsan'@'localhost' (using passwor

d: YES)

原因:在SQLyog中创建的用户,需要调用FLUSH PRIVILEGES语句来刷新

注意:用cmd登录时,不要在语句后面下分号,会被当做密码的一部分

023、用户管理和权限管理_第2张图片

2、删除用户

    * 语法:DROP USER '用户名'@'主机名';

举例:

DROP USER 'lisi'@'localhost';

SELECT * FROM USER;

023、用户管理和权限管理_第3张图片

      三、修改密码

        方式一:

      UPDATE USER SET PASSWORD = PASSWORD('密码') WHERE USER='用户名';

      方式二:

SET PASSWORD FOR '用户名'@'主机名' = PASSWORD('密码');

举例:

UPDATE USER SET PASSWORD = PASSWORD('abc') WHERE USER='zhangsan';

SET PASSWORD FOR 'lisi'@'%' = PASSWORD('abc');

4、如果忘记了root密码怎么办?

步骤一、

使用管理员方式打开cmd,然后输入如下命令并分别执行:

 net stop mysql

mysqld  --skip-grand-tables;

执行完之后,不会输出任何信息,光标停在那闪烁。

步骤二、

使用管理员方式重新开启一个cmd,输入如下命令并分别执行:

use mysql;

updata user set password=password(‘输入需要设置的新密码’) where user=’root’;

023、用户管理和权限管理_第4张图片

步骤三、执行完后在cmd中输入:

net stop mysql;

net start mysql;‘’

mysql –uroot –p新密码                            ---》直接按回车键

5、查询用户

  执行如下指令即可查询:

 use mysql ;

select * from user;

二、权限管理

      1.查询权限:

       

SHOW GRANTS FOR ‘用户名’@’主机名’

举例:

所有用户列表

SHOW GRANTS FOR 'lisi'@'%';

    

  2.授权权限:

       

grant  权限列表  on  数据库名.表名  to   用户名’@’主机名’

举例:

GRANT SELECT,UPDATE ON sql_sel.`account` TO 'lisi'@'%';

注意:设置所有给某用户所有权可以写成:

GRANT ALL ON *.* TO '用户名'@'主机名';

举例:

GRANT ALL ON *.* TO 'lisi'@'%';

执行之前:

执行之后:

      3.撤销授权

 revoke 权限列表   on 数据库名.表名  from     用户名’@’主机名’

取消用户所有权限:

REVOKE ALL ON *.* FROM '用户名'@'主机名';

三、权限列表

Mysql权限
权限 权限级别 权限说明
CREATE 数据库、表或索引 创建数据库、表或者索引
DROP 数据库或表 删除数据库或表
GRANT OPTION 数据库、表或者保存的程序 赋予权限选项
REFERENCES 数据库或表  
ALTER 更改表
DELETE 删除数据权限
INDEX 索引权限
INSERT 插入权限
SELECT 查询权限
UPDATE 更新权限
CREATE VIEW 视图 创建视图权限
SHOW VIEW 视图 查看视图权限
ALTER ROUTINE 存储过程 更改存储过程
CREATE ROUTINE 存储过程 创建存储过程
EXECUTE 存储过程 执行存储过程
FILE 服务器主机上的文件访问 文件访问权限
CREATE TEMPORARY TABLES 服务器管理 创建临时表
LOCK TABLES 服务器管理 锁表
CREATE USER 服务器管理 创建用户
PROCESS 服务器管理 查看进程权限
RELOAD 服务器管理 执行flush refresh,reload等命令的权限
REPLICATION CLIENT 服务器管理 复制权限
REPLICATION SLAVE 服务器管理 复制权限
SHOW DATABASES 服务器管理 查看数据库权限
SHUTDOWN 服务器管理 关闭数据库权限
SUPER 服务器管理 执行KILL线程

 

Mysql 数据库层面(db表)权限
权限 说明
SELECT 查询
INSERT 插入
UPDATE 更新
DELETE 删除
CREATE 创建表或者索引
DROP 删除库、表
GRANT 赋予权限选项
INDEX 索引
ALTER 更改表
CREATE_TMP_TABLE 创建临时表
LOCK_TABLES 锁表
SHOW_VIEW 查看视图
CREATE_VIEW 创建视图
CREATE_ROUTION 创建存储过程
ALTER_ROUTION 更改存储过程
EXECUTE 执行存储过程
EVENT 创建时间调度器
TRIGGER 创建触发器

 

 

你可能感兴趣的:(02_mysql)