目录
[2、系统数据库mysql 的 user 表。](#2、系统数据库mysql 的 user 表。)
[3、在系统数据库mysql 的 user 表当中如何判断创建的用户是否唯一?](#3、在系统数据库mysql 的 user 表当中如何判断创建的用户是否唯一?)
[4、系统数据库mysql 的 user 表当中的用户密码是加密的。](#4、系统数据库mysql 的 user 表当中的用户密码是加密的。)
[5、系统数据库mysql 的 user 表去中创建用户的语法。](#5、系统数据库mysql 的 user 表去中创建用户的语法。)
一、DCL小结(数据控制语言)
1、查询表不在当前使用的数据库,可以在表名前加数据库名。
sql#如下 select * from 指定数据库名.表名;
2、系统数据库mysql 的 user 表。
- 在MySQL数据库当中用户的信息、用户所具有的权限的信息。这些都是存放在系统数据库mysql 的 user 表当中。
3、在系统数据库mysql 的 user 表当中如何判断创建的用户是否唯一?
- 不是单纯的看"User"这一列,而是还要看"Host"这一列。 (两个都满足一样,才冲突!!)
- Host字段。值设置为"localhost"表示这个用户只能在本机访问数据库服务器。值设置为"%"(百分号)表示任何一台电脑都能通过创建的用户访问数据库服务器。
4、系统数据库mysql 的 user 表当中的用户密码是加密的。
(不是明文,不安全!)
- 其中对应的密文字段是"authentication_string"。
5、系统数据库mysql 的 user 表去中创建用户的语法。
- 创建用户的语法。
sql#语法: CREATE USER 用户名@地址 IDENTIFIED BY '密码';
sql#创建用户 #localhost/% 表示本机访问还是可远程访问 CREATE USER 用户名@localhost/% IDENTIFIED BY '密码';
- 两种创建的举例。
sql--user1用户只能在localhost这个IP登录mysql服务器 CREATE USER user1@localhost IDENTIFIED BY '123'; --user2用户可以在任何电脑上登录mysql服务器 CREATE USER user2@'%' IDENTIFIED BY '123';
6、命令行快速启动与关闭mysql服务。
(以管理员身份运行)
- 启动服务:命令行敲命令"net start mysql"即可。
- 关闭服务:命令行敲命令"net start mysql"即可。
- 退出mysql。
命令行输入"exit"。
7、如何在创建用户后去授予权限?
- 关键字:GRANT。
- 授予权限的语法。
(1)其中"on"的意思就是把某些库的某些表的什么权限给这个用户。
(2)"to"的意思就是给指定的用户。
sqlGRANT 权限1, ... , 权限n ON 数据库.* TO 用户名;
- 注意事项。
(1)其中多个权限之间,使用逗号分隔。
(2)授权时,数据库名和表名可以使用 * 进行通配,代表所有。
- 举例如下。
sql#赋予数据库mydb1的所有表的指定权限 GRANT CREATE,ALTER,DROP,INSERT,UPDATE,DELETE,SELECT ON mydb1.* TO user1@localhost; #赋予数据库mydb1的所有表的所有权限 GRANT ALL ON mydb1.* TO user2@localhost;
- mysql做不到控制用户只能访问某些列。没有这么精细的控制。
- 但是可以在Java代码中做权限控制。
8、给用户授权时的几种常用权限。
(下述只是简单罗列了常见的几种权限描述)
(其他权限描述及含义,可以直接参考官方文档)官方文档https://dev.mysql.com/doc/refman/8.0/en/privileges-provided.html
9、撤销权限。
- 关键字:REVOKE。
- 撤销权限就是收回,也就是"from"。表示从哪个用户收回权限。授予权限就是给"to"。
- 撤销权限的语法。
sqlREVOKE权限1, ... , 权限n ON 数据库.* FORM 用户名;
- 举例如下。
sqlREVOKE CREATE,ALTER,DROP ON mydb1.* FROM user1@localhost;
- 注意撤销权限之后,尽量让这个用户重新登录测试!
10、查询用户权限。
- 语法。
sqlSHOW GRANTS FOR 用户名; SHOW GRANTS FOR user1@localhost;
- 举例。
11、删除用户。
- 语法。
sqlDROP USER 用户名; DROP USER user1@localhost;
- 注意事项。
1、在MySQL中需要通过用户名@主机名的方式,来唯一标识一个用户。
2、主机名可以使用 % 通配。
3、这类SQL开发人员操作的比较少,主要是DBA( Database Administrator 数据库管理员)使用。
12、修改用户密码(高、低版本)。
- mysql高版本语法。
- mysql低版本语法。
sqlUSE mysql; UPDATE USER SET authentication_string=PASSWORD('新密码') WHERE User='用户名' and Host='IP'; #下面这个代表刷新 FLUSH PRIVILEGES;