1.mysql遇见Expression #1 of SELECT list is not in GROUP BY clause and contains nonag(去掉only_full_group_by)
查询MySQL版本与sqlmode:
select version(), @@sql_mode;
修改sqlmode,执行下面两句代码:
set global sql_mode='STRICT_TRANS_TABLES,NO_ZERO_IN_DATE,NO_ZERO_DATE,ERROR_FOR_DIVISION_BY_ZERO,NO_ENGINE_SUBSTITUTION';
set session sql_mode='STRICT_TRANS_TABLES,NO_ZERO_IN_DATE,NO_ZERO_DATE,ERROR_FOR_DIVISION_BY_ZERO,NO_ENGINE_SUBSTITUTION';
还有一个方法就是找到MYSQL的my.ini文件,然后在[mysqld]节点下增加一行
sql_mode=STRICT_TRANS_TABLES,NO_ZERO_IN_DATE,NO_ZERO_DATE,ERROR_FOR_DIVISION_BY_ZERO,NO_ENGINE_SUBSTITUTION
2.MySQL 中没有my.ini问题
可以在根目录下创建一个my.ini文件
[mysqld]
# 设置3306端口
port=3306
# 自定义设置mysql的安装目录,即解压mysql压缩包的目录
basedir=D:\\Program Files\\MySQL\\MySQL Server 8.0
# 自定义设置mysql数据库的数据存放目录D:\MySQL_Data\Data
datadir=D:\\Program Files\\MySQL\\MySQL Server 8.0\\data
# 允许最大连接数
max_connections=200
# 允许连接失败的次数,这是为了防止有人从该主机试图攻击数据库系统
max_connect_errors=10
# 服务端使用的字符集默认为UTF8
character-set-server=utf8
# 创建新表时将使用的默认存储引擎
default-storage-engine=INNODB
# 默认使用“mysql_native_password”插件认证
default_authentication_plugin=mysql_native_password
sql_mode=STRICT_TRANS_TABLES,NO_ZERO_IN_DATE,NO_ZERO_DATE,ERROR_FOR_DIVISION_BY_ZERO,NO_ENGINE_SUBSTITUTION
[mysql]
# 设置mysql客户端默认字符集
default-character-set=utf8
[client]
# 设置mysql客户端连接服务端时默认使用的端口和默认字符集
port=3306
default-character-set=utf8
3. 忘记MySQL登录密码,如何重置
(1)找到MYSQL的安装bin目录下打开命令窗口,执行命令,停止MYSQL服务
net stop mysql
(2)开启跳过密码验证登录的MYSQL服务,执行命令
mysqld --console --skip-grant-tables --shared-memory
(3)bin目录重新打开一个命令窗口,输入登录命令
mysql -u root -p
直接按回车键,就登录MYSQL成功
(4)将密码重置为空
use mysql
update user set authentication_string='' where user='root';
注意命令后面的分号
(5)关闭mysqld --console --skip-grant-tables --shared-memory命令启动的MYSQL服务
(6)bin目录重新打开一个命令窗口,输入命令启动MYSQL服务
net start mysql
此时,因为密码已经重置为空,所以可以通过无密码状态登录MySQL
mysql -u root -p
直接按回车键,就登录MYSQL成功
(7)然后修改root的密码
alter user 'root'@'localhost' identified by '新密码';
注意命令后面的分号
(8)等重置成功后输入命令:exit,就可以退出当前登录,然后重新尝试新密码登录
输入登录命令
mysql -u root -p
会提示输入密码,输入你修改的密码,如果能成功登录,则重置密码成功结束
4. MySQL80服务启动后停止
MYSQL启动的时候报错
(1)首先将MYSQL的data文件夹,对data文件夹进行备份,如果data文件夹不再MYSQL的安装目录下,则可以找到my.ini文件中找到datadir项,后面的地址就是data文件夹目录
(2)将data文件夹删除
(3)在MYSQL的安装bin目录下,打开命令窗口,输入如下命令
mysqld --initialize-insecure --user=mysql
等待命令执行结束,数据库就可以重新初始化成功了,MYSQL服务也可以正常启动了
(4)然后我们就可以利用备份的data文件夹下的文件进行数据的恢复了
5.利用data文件夹下的文件进行数据库恢复
(1)首先我们将我们的数据库文件复制到我们新的data目录下
(2)然后我们将下面的几个文件复制到我们新的data目录下
auto.cnf
ib_buffer_pool
ib_logfile0
ib_logfile1
ibdata1
mysql.ibd
(3)最后我们重启MYSQL服务就可以了