* 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下:
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登录时,不要在语句后面下分号,会被当做密码的一部分
)
2、删除用户
* 语法:DROP USER '用户名'@'主机名';
举例:
DROP USER 'lisi'@'localhost';
SELECT * FROM USER;
三、修改密码
方式一:
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’;
步骤三、执行完后在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 | 创建触发器 |