MySQL数据库5.7
- MySQL数据库5.7
- 1. 5.7乱码:ERROR 1366 (HY000): Incorrect string value: '\xC0\xEE\xCB\xC4' for column 'name' at row 1
- 1.1 问题分析
- 1.2 问题解决:查看编码 `show variables like 'character_%';`
- 1.3 方法1:修改编码,添加中文数据
- 1.4 方法2:修改配置文件——重启MySQL服务
- 1.5 命令重启
- 2. Mysql8.0 Navicat可视化工具连接失败
- 2.1 问题分析
- 2.2 问题解决
MySQL数据库5.7
这个乱码只有安装数据库是5.7的才会有这种情况,数据库是8.0的默认都是utf-8的,不需要修改就可以直接使用的
1. 5.7乱码:ERROR 1366 (HY000): Incorrect string value: ‘\xC0\xEE\xCB\xC4’ for column ‘name’ at row 1
1.1 问题分析
在创建表或者创建库的时候,如果没有指定编码,默认是拉丁
(CHARSET=latin1)的
1.2 问题解决:查看编码 show variables like 'character_%';
mysql> show variables like 'character_%';
+--------------------------+---------------------------------------------------------+
| Variable_name | Value |
+--------------------------+---------------------------------------------------------+
| character_set_client | gbk |
| character_set_connection | gbk |
| character_set_database | latin1 |
| character_set_filesystem | binary |
| character_set_results | gbk |
| character_set_server | latin1 |
| character_set_system | utf8 |
| character_sets_dir | C:\Program Files\MySQL\MySQL Server 5.7\share\charsets\ |
+--------------------------+---------------------------------------------------------+
8 rows in set, 1 warning (0.00 sec)
1.3 方法1:修改编码,添加中文数据
- 修改编码 :
set character_set_server=utf8;
;set character_set_database=utf8;
- 存储成功
mysql> show create table employess;
+-----------+----------------------------------------------------------------------------------------------------------------------------------------------------+
| Table | Create Table |
+-----------+----------------------------------------------------------------------------------------------------------------------------------------------------+
| employess | CREATE TABLE `employess` (
`id` int(11) DEFAULT NULL,
`name` varchar(20) CHARACTER SET gbk DEFAULT NULL
) ENGINE=InnoDB DEFAULT CHARSET=latin1 |
+-----------+----------------------------------------------------------------------------------------------------------------------------------------------------+
1 row in set (0.00 sec)
mysql> insert into employess values (1002,'李四');
ERROR 1366 (HY000): Incorrect string value: '\xC0\xEE\xCB\xC4' for column 'name' at row 1
mysql> set character_set_database=utf8;
Query OK, 0 rows affected, 1 warning (0.00 sec)
mysql> set character_set_server=utf8;
Query OK, 0 rows affected (0.00 sec)
mysql> insert into employess values (1001,'张三');
Query OK, 1 row affected (0.00 sec)
mysql> select * from employess;
+------+------+
| id | name |
+------+------+
| 1001 | 张三 |
+------+------+
1 row in set (0.00 sec)
mysql> insert into employess values(1002,'李四');
Query OK, 1 row affected (0.00 sec)
mysql> select * from employess;
+------+------+
| id | name |
+------+------+
| 1001 | 张三 |
| 1002 | 李四 |
+------+------+
2 rows in set (0.00 sec)
1.4 方法2:修改配置文件——重启MySQL服务
首先我们需要找到我们安装MySQLC盘的位置(这里不是安装位置,是存放配置文件的位置)C:\ProgramData\MySQL\MySQL Server 5.7
配置文件中添加
default-character-set=utf8 #默认字符集
character-set-server=utf8
collation-server=utf8_general_ci
1.5 命令重启
- 方法1(命令操作): 打开小黑框,
Linux直接可以支持启动:# service mysqld start
停止:# service mysqld stop
重启:# service mysqld restart
Windows只支持 停止:输入 net stop mysql57
启动 :输入 net start mysql57
- 方法2(手动操作):
此电脑——(右键)管理——服务与应用程序——服务——MYSQL——开启(停止、重启动)
2. Mysql8.0 Navicat可视化工具连接失败
错误号码2058 Plugin caching_sha2_password could not be loaded:.....
2.1 问题分析
这是MySQL8.0采用了更安全的加密方式,在我们安装的时候我们选择了这种更安全的加密方式,现在的可视化工具还不支持这种加密方式,如果当时选择下边的就不会出现这种问题了,解决办法有两种:
方法一:更新可以支持这种加密的可视化加密工具;
方法二:将加密方法改为之前的加密方式 (比较好操作)
2.2 问题解决
出现这个原因:
MySQL8之前的版本中密码加密规则是mysql_native_password,
MysQL8之后,密码加密规则是caching_sha2_password。
现在我们将MySQL8用户登录密码加密规则还原成mysql_native_password。用命令行(cmd)登录MySQL数据库之后,执行如下命令修改用户密码加密规则并更新用户密码,这里修改用户名为"root@localhost"的用户密码规则为“mysql_native_password”,密码值为“123456”,如图所示。
#用命令行账号密码登录
C:\Users\EDY>mysql -uroot -p
#使用mysql数据库
use mysql;
# 修改本地'root'@'localhost'用户的密码规则和密码 密码可以自定义,这里用的密码是123456
alter user 'root'@'localhost' identified with mysql_native_password by '123456';
# 方式1,添加远程连接的用户连接密码加密规则
mysql> ALTER USER 'root'@'%' IDENTIFIED WITH mysql_native_password BY '123456';
# 方式2, 把本地'root'@'localhost'修改为'root'@'%',远程就可以连接了
mysql> update user set host = '%' where host = 'localhost' and user = 'root';
# 查看用户名连接密码加密方式
mysql> select host,user,plugin from mysql.user;
+-----------+------------------+-----------------------+
| host | user | plugin |
+-----------+------------------+-----------------------+
| % | root | mysql_native_password |
| localhost | mysql.infoschema | caching_sha2_password |
| localhost | mysql.session | caching_sha2_password |
| localhost | mysql.sys | caching_sha2_password |
| localhost | root | mysql_native_password |
+-----------+------------------+-----------------------+
5 rows in set (0.02 sec)
#刷新权限
flush privileges;