4. Linux下修改配置
mysql下
show databases;
use mysql;
select host,user from user;
可以发现root只能在localhost登录
所以需要设置可以远程连接
update user set host = '%' where user = 'root';
实际开发中,可以写得严谨一点
update user set host = '192.168.1.%' where user = 'root';
重新查看:
一定要执行操作,刷新权限,才可以起作用
flush privileges;
测试连接,发现报错不一样了。这个问题只会在mysql8.0中出现。
因为mysql8.0新特性:对密码进行加密。
解决方法:Linux下,登录mysql之后,执行这条SQL:
ALTER USER 'root'@'%' IDENTIFIED WITH mysql_native_password BY '123456';
然后再重新配置SQLyog连接,则可连接成功了,OK。
跳转5
5.测试
mysql1 mysql8.0的连接成功
连接mysql2 mysql5.7
提示:
关闭防火墙
修改root用户远程登录
一定要执行操作,刷新权限,才可以起作用
flush privileges;
成功:
4. MySQL8的密码强度评估(了解)
略
5.字符集的相关操作
5.1 修改MySQL5.7字符集
1.修改步骤
在MySQL8.0版本之前,默认字符集为latin1,utf8字符集指向的是utf8mb3。网站开发人员在数据库设计的时 候往往会将编码修改为utf8字符集。如果遗忘修改默认的编码,就会出现乱码的问题。从MySQL8.0开始,数据库的默认编码将改为utf8mb4,从而避免上述乱码的问题。
操作1:查看默认使用的字符集
show variables like 'character%'; #或者 show variables like '%char%';
MySQL8.0中执行:
MySQL5.7中执行:
show create table emp1;
show create database dbtest1;
2.修改
vim /etc/my.cnf
修改文件
最后添加语句
character_set_server=utf8
3.最后重启mysql服务
systemctl restart mysqld.service
4.重新登录并查看
show variables like '%character%';
注意:
已有的数据库的字符集不会修改,
已有数据库下新建表(没有指明字符集)和数据库的字符集保持一致
2.已有库&表字符集的变更
修改已有数据库的字符集
alter database dbtest1 character set 'utf8';
修改已有数据表的字符集
alter table t_emp convert to character set 'utf8';
注意:可能会有已有数据的乱码问题
5.2 各级别的字符集
MySQL有4个级别的字符集和比较规则,分别是:
- 服务器级别
- 数据库级别
- 表级别
- 列级别
执行如下SQL语句:
show variables like 'character%';
character_set_server:服务器级别的字符集
character_set_database:当前数据库的字符集
character_set_client:服务器解码请求时使用的字符集
character_set_connection:服务器处理请求时会把请求字符串从character_set_client转为 character_set_connection
character_set_results:服务器向客户端返回数据时使用的字符集
创建数据库,如无指明字符集,则默认和服务器级别一样
同理:当前一级的默认创建,其字符集和上一级相同
可以显示指明创建的字符集
character set 'utf8'
实际开发中不太需要,统一utf8字符集
5.3 字符集与比较规则(了解)
1. utf8与utf8mb4
略
通过如下指令可以查看mysql支持的字符集:
SHOW CHARSET; # 或者 SHOW CHARACTER SET;
2. 比较规则
略
常用操作1
# 查看GBK字符集的比较规则 SHOW COLLATION LIKE 'gbk%'
# 查看UTF-8字符集的比较规则 SHOW COLLATION LIKE 'utf8%'
常用操作2
#查看服务器的字符集和比较规则 SHOW VARIABLES LIKE '%_server';
#查看数据库的字符集和比较规则 SHOW VARIABLES LIKE '%_database';
#查看具体数据库的字符集和比较规则 SHOW CREATE DATABASE dbtest1;
#修改具体数据库的字符集和比较规则 ALTER DATABASE dbtest1 DEFAULT CHARACTER SET 'utf8' COLLATE 'utf8_general_ci';