解决Mysql搭建成功后执行sql语句报错以及区分大小写问题
刚搭建完mysql 8.0以后会:
一、表区分大小写,
二、执行正确的sql语句成功且会报:[Err] 1055 - Expression #1 of ORDER BY clause is not in GROUP BY clause and 。。。。错误。
版本是mysql 5.6或 myql 8.0以下方案解决 :
1.安装完后,执行sql语句没问题,但是会报错;在/etc/my.cnf数据库的配置文件加上下面这段配置然后重启mysql服务
sql_mode=STRICT_TRANS_TABLES,NO_ZERO_IN_DATE,NO_ZERO_DATE,ERROR_FOR_DIVISION_BY_ZERO,NO_AUTO_CREATE_USE
2.mysql设置不区分表名的大小写
在/etc/my.cnf数据库的配置文件加上下面这段配置然后重启mysql服务
lower_case_table_names=1
3.mysql设置新建数据库默认编码为utf8
在/etc/my.cnf数据库的配置文件加上下面这段配置然后重启mysql服务 character_set_server=utf8
版本8.0及以上版本解决以上问题:
如果安装成功,并已经启动mysql (配置不区分表格大小写相对会麻烦一些,不要怕,跟着我的思路来准成功)
1、停止数据库服务
systemctl stop mysqld
2、备份数据(或者使用mv直接进行更改名称,直接改名后不用执行3、的操作,本人热衷于mv操作)
cp /var/lib/mysql/ /var/lib/mysql_sql/
3、删除 /var/lib/mysql/ 文件
rm -rf /var/lib/mysql/
4、在文件 my.cnf 中添加下面的一句话(编辑my.cnf文件 vi /etc/my.cnf):
lower_case_table_names=1 ( 说明 0:区分大小写,1:不区分大小写效果如下)
5、初始化密码设计
mysql --initialize
6、改变属主
chown -R mysql:mysql /var/lib/mysql/
7、启动mysql
systemctl start mysqld
8、进入Mysql (如果mysql报错没有发现《则需要执行本人安装mysql8.0博客的https://www.cnblogs.com/ganfd/p/15175458.html 6-10命令再次赋权设置》)
9、设置密码等级
mysql> set global validate_password.policy=0;
Query OK, 0 rows affected (0.00 sec)
mysql> set global validate_password.length=1;
Query OK, 0 rows affected (0.00 sec)
10、修改密码
11、远程控制要操作
### 授予远程连接权限
create user 'root'@'%' identified by '123123';
grant all on *.* to `root`@`%` WITH GRANT OPTION;
ALTER USER 'root'@'%' IDENTIFIED with mysql_native_password by '123123';
flush privileges;
解决安装成功mysql8.0执行正确sql语句报错问题:(依次执行下面语句,更改 sql_mode 值便能够 成功解决)
show variables like "sql_mode";
set sql_mode='';
set sql_mode='no_engine_substitution,strict_trans_tables';
本文来自博客园,作者:ganfd,转载请注明原文链接:https://www.cnblogs.com/ganfd/p/15189537.html

浙公网安备 33010602011771号