一说

前情提示

系统:

MySQL5.7中添加用户,新建数据库,用户授权,删除用户,修改密码(注意每行后边都跟个;表示一个命令语句结束):

登录MySQL

mysql -u root -p

Enter password:密码

1.列出所有数据库

show database;

2.切换数据库

use 数据库名;

3.列出某个数据库所有表

use 数据库名;

show tables;

4.查询数据

use 数据库名;

select 字段名(多个字段用“,”隔开,*表示所有字段) from 数据表名;

也可以用 select 字段名(多个字段用“,”隔开,*表示所有字段) from 数据库名.数据表名;

5.显示数据表结构

describe 数据表名; # 也可以简写为 desc 数据表名;

也可以用 describe 数据库名.数据表名;

6.删除数据库和数据表

drop database 数据库名;

drop table 数据表名;

7.新建用户

创建用户:

insert into mysql.user(Host,User,Password) values(“localhost”,”zhangsan”,password(“123456”));

需要注意的是,如上,用insert方法向MySQL5.7中添加用户出现 ERROR 1364 (HY000): Field ‘ssl_cipher’ doesn’t have a default value 的错误,MySQL5.7为了数据库的安全默认是禁止这种方法来创建用户的,所以应该避免用这种插入的方式来创建用户,正确的创建用户的方式是:

无密码:create user ‘用户名‘@’localhost’;

有密码:create user ‘用户名‘@’localhost’ identified by ‘密码’;

create user ‘用户名‘@’localhost’ identified by ‘密码’; # 本地登录

create user ‘用户名‘@’%’ identified by ‘密码’; # 远程登录

exit # 退出数据库

mysql -u 用户名 -p # 测试是否创建成功

8.使用GRANT命令为账户授权(需在root账户下操作)

GRANT命令的常见格式以及解释
命令 作用
GRANT 权限 ON 数据库.表名称 TO 用户名@登录主机 对某个特定数据库中的特定表给予授权
GRANT 权限 ON 数据库.* TO 用户名@登录主机 对某个特定数据库中的所有表给予授权
GRANT 权限 ON . TO 用户名@登录主机 对所有数据库及所有表给予授权
GRANT 权限1,权限2 ON 数据库.* TO 用户名@登录主机 对某个数据库中的所有表给予多个授权
GRANT ALL PRIVILEGES ON . TO 用户名@登录主机 对所有数据库及所有表给予全部授权(需谨慎操作)

注意:授权的同时如需创建用户并设置用户密码,用如下的命令

grant 权限 on 数据库.* to ‘用户名‘@’登录主机’ identified by ‘密码’;

首先为用户创建一个数据库(testDB):

create database testDB;

如果需要指定数据库的字符编码为utf8,用如下命令:

create database testDB default charset utf8 collate utf8_general_ci;

(1)授权zhangsan用户拥有testDB数据库的所有权限(某个数据库的所有权限):

grant all privileges on testDB.* to ‘zhangsan’@’localhost’;

flush privileges; # 刷新系统权限表

show grants for ‘zhangsan’@’localhost’; # 查看账户 zhangsan 的权限

(2)如果想指定部分权限给zhangsan用户,可以这样来写:

grant select,update on testDB.* to ‘zhangsan’@’localhost’;

flush privileges; # 刷新系统权限表

(3)授权zhangsan用户拥有所有数据库的某些权限:

grant select,delete,update,create,drop on . to ‘zhangsan’@’%’; # 注意:需要mysql.user表中zhangsan账户对应的Host的字段值为“%”,才能正确执行此命令

# zhangsan用户对所有数据库都有 select,delete,update,create,drop 权限。

# @’%’ 表示对所有非本地主机授权,不包括localhost。

# @’localhost’ 表示对所有本地主机授权。

9.使用REVOKE命令取消账户权限

revoke select on . from ‘zhangsan’@’localhost’; # 取消zhangsan对所有数据库的查询权限

revoke all on testDB.* from ‘zhangsan’@’localhost’; # 取消zhangsan对testDB数据库的所有权限

show grants for ‘zhangsan’@’localhost’; # 查看账户 zhangsan 的权限

10.删除用户

delete from user where User=’zhangsan’ and Host=’localhost’;

flush privileges;

或者也可以使用如下命令,删除账户及权限

drop user ‘用户名‘@’%’;

drop user ‘用户名‘@ ‘localhost’;

11.修改指定用户密码

update mysql.user set authentication_string=password(‘新密码’) where User=’zhangsan’ and Host=’localhost’;

flush privileges;

注意:在 MySQL5.7 中 user 表已经不再使用 password 来作为密码的字段了而改成了authentication_string。