MySQL5.7数据库的基本操作命令
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 ⽤户名@登录主机对某个特定数据库中的所有表给予授权
mysql数据库迁移命令
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。