标签 mysql 下的文章

升级mysql5.5到mysql5.7,查询警告 - this is incompatible with sql_mode=only_full_group_by

问题:升级mysql到5.7,导入mysql5.5的数据库,站点日志中,有类似 this is incompatible with sql_mode=only_full_group_by 的警告。

解决:在mysql的配置文件mysql.ini里加sql_mode的参数,如下边的内容:

[mysqld]
sql_mode = STRICT_TRANS_TABLES,NO_ZERO_IN_DATE,NO_ZERO_DATE,ERROR_FOR_DIVISION_BY_ZERO,NO_AUTO_CREATE_USER,NO_ENGINE_SUBSTITUTION

原因可能是新版本的mysql5.7与原sql查询语句不“兼容”。

参考:https://stackoverflow.com/questions/34115174/error-related-to-only-full-group-by-when-executing-a-query-in-mysql

MySQL 5.7 - You must reset your password using ALTER USER statement before executing this statement

感谢“冬日”。

CentOS 7 系统,安装了mysql 5.7。

现象:用mysql客户端sql查询,如列出数据库,提示 You must reset your password using ALTER USER statement before executing this statement
mysql-57-password-1.png

处理:执行sql语句 - ALTER USER 'root'@'localhost' IDENTIFIED BY 'CNnet!9283'; 更新root用户密码
mysql-57-password-2.png

参考:https://stackoverflow.com/questions/33467337/reset-mysql-root-password-using-alter-user-statement-after-install-on-mac

非root用户用mysqldump导出数据库 - 用 --lock-tables=false 参数避免权限不足

过程:

1.尝试用普通数据库用户导出数据库,mysqldump -u ykelai -p ykelai_db > ykelai_db-aq.sql

2.提示错误:mysqldump: Got error: 1044: Access denied for user 'ykelai'@'localhost' to database 'ykelai_db' when using LOCK TABLES

3.加上--lock-tables=false 参数,导出成功:mysqldump --lock-tables=false -u ykelai -p ykelai_db > ykelai_db-aq.sql
mysqldump.png

参考:https://stackoverflow.com/questions/104612/run-mysqldump-without-locking-tables

清空会话数据表 - The table 'ecs_sessions' is full

网友说,网站访问不了啦,是不是数据库坏掉了。

过程:

1.访问网站首页,提示错误信息: MySQL Query Error - The table 'ecs_sessions' is full
session-full-0.png

2.备份数据库后,可使用数据库管理工具,如 HeidiSQL 清空 esc_session 的表
session-full-1.png

3.也可以从mysql控制台,执行 TRUNCATE `ecs_sessions` 的语句来清空表数据
session-full-2.png

参考:

Linux脚本 - 自动检查服务是否运行 - 如没运行自动重启

一用户说,wordpress的站点,还在测试,为什么打不开,页面提示 Error establishing a database connection 了呢。登录查看,当时无mysql进程,可能当系统资源不够用时,系统强制退出了mysql数据库进程。

以下是在Debian 9 里,使用apt安装的mariadb数据库,设置了每隔三分钟检查mysql是否有运行,如没运行,自动启动。

过程:

1.数据库进程异常退出后,访问wordpress站点,提示 Error establishing a database connection 出错
auto-start-mysql-service-1.png

2.登录到系统,执行 ps aux | grep mysql ,无mysql进程
auto-start-mysql-service-2.png

3.执行 service --status-all ,列出当前注册为服务的名称,如有mysql服务
auto-start-mysql-service-3.png

4.wget https://raw.githubusercontent.com/sierracircle/services-checker/master/services # 下载自动启动服务的脚本

5.chmod +x services # 添加执行权限

6.vi services # 修改脚本内容,如可将邮件通知的邮箱地址 EMAIL 修改为自己的,修改要检测的服务名 SERVICES,本例是 mysql
auto-start-mysql-service-4.png

7.crontab -e # 添加自动化任务,每隔三分钟执行脚本 /root/services

# check on services every 3 minutes
*/3 *  * * * /root/services

auto-start-mysql-service-5.png
8.保存后,等约三分钟,脚本自动启动mysql数据库,wordpress可以正常访问了
auto-start-mysql-service-6.png

参考: