MySQL数据库
二、库操作
1、系统库简介
②mysql:核心数据库,里面包含用户、权限、关键字等信息,不可以删除
④sys:mysql 5.7版本新增加的库,通过这个库可以快速的了解系统的元数据信息,可以方便DBA发现数据库的很多信息,解决性能瓶颈都提供了巨大帮助
2、库操作
①增加
create database db_name charset utf8;
②查看
- 查询当前用户下所有数据库
- 查看创建数据库信息
show create database db_name;
- 查询当前操作所在的数据库名称
show create database db_name;
③选择
④删除
3、库的命名规范
- 可以由字母、数字、下划线、@、#、$组成,最长128位且区分大小写
- 命名需要保证唯一性
- 不能使用关键字、不能单独使用数字
4、用户权限
①用户管理
- 创建用户
create user '用户名'@'IP地址' identified by '密码';
- 删除用户
- 修改用户
rename user '用户名'@'IP地址' to '新用户名'@'IP地址';
②授权管理
- 查看权限
show grants for '用户'@'IP地址';
- 授权
grant 权限 on 数据库.表 to '用户'@'IP地址';
- 取消权限
grant 权限 on 数据库.表 to '用户'@'IP地址';
- 例:创建用户并给用户授权
#创建新用户
create user 'yang'@'localhost' identified '123';
#授权方式一:为yang授权db1数据库下的所有表的查询、更新、修改权限
grant select,update,delete on db1.* to 'yang'@'localhost';
#授权方式二:为yang授权所有库的所有权限(除grant权限外)
grant all privileges on *.* to 'yang'@'localhost';
#刷新用户权限
flush privileges;
5、修改密码、忘记密码
①修改密码
- 方式一: mysqladmin命令 5.6版本数据库专用
mysqladmin -u用户名 -p密码 password 新密码
- 方式二: 直接设置用户密码 5.7 or 5.6 都可以用
set password for '用户名'@'IP' = password('新密码');
flush privileges;
- 方式三:修改mysql库下的user表
# 5.7版本修改密码方式: 修改 和 刷新权限 需要分开执行
update mysql.user set authentication_string=password('新密码') where user= '用户名';
flush privileges;
# 5.6版本修改密码方式:
update mysql.user set password = password('新密码') where user= '用户名';
flush privileges;
②忘记密码 (虽然可以暴力破解,但是只能在数据库本身操作,无法远程)
- 首先打开cmd窗口,关闭mysql服务
- 然后跳过权限检查,启动mysql,输入命令
mysqld --skip-grant-tables
- 重新打开一个新的cmd窗口,启动客户端(已跳过权限检查,可以直接登录)
- 直接进来,修改密码
- 刷新权限
6、中文编码问题
①查询字符编码
SHOW VARIABLES LIKE 'char%';
②解决中文编码无法显示问题
- 创建my.ini文件,放在mysql根路径下
- 在该文件中添加以下内容即可
- 添加此文件后需要重新启动服务,以保证此文件生效
# my.ini文件内容:
[client]
default-character-set=utf8
[mysql]
#设置mysql客户端默认字符集
default-character-set=utf8
[mysqld]
#设置3306端口
port = 3306
#允许最大连接数
max_connections=200
#服务端使用的字符集默认为8比特编码的latin1字符集
character-set-server=utf8
#创建新表时将使用的默认存储引擎
default-storage-engine=INNODB
#解决mysql在执行sql语句后出现1055错误,sql_mode = only_full_group_by不相容
sql_mode='NO_ENGINE_SUBSTITUTION'
#or 解决mysql在执行sql语句后出现1055错误
sql-mode="STRICT_ALL_TABLES,ERROR_FOR_DIVISION_BY_ZERO,NO_ZERO_DATE,NO_ZERO_IN_DATE,NO_AUTO_CREATE_USER"