标签归档:mysql

docker 无法启动 mysql 容器可能的解决办法

启动 mysql:8.* 效果很好,但 mysql:5.7.* 会导致立即 100% 内存消耗,尝试通过以下方法解决。

方法1

  1. 编辑 /lib/systemd/system/containerd.service ,修改 LimitNOFILE=infinityLimitNOFILE=1048576
  2. sudo systemctl daemon-reload
  3. sudo systemctl restart containerd.service

再尝试启动 mysql 容器。

方法2

  1. 编辑 /etc/docker/daemon.json
{
    // 原有配置...
    "default-ulimits": {
        "nofile": {
            "Name": "nofile",
            "Hard": 64000,
            "Soft": 64000
        }
    }
}

2. 重启服务 systemctl restart docker

参考:https://sukbeta.github.io/docker-ulimit-configure/

mysql 5.7 无法使用 group by 的解决办法

出错的提示可能是这样的

[Err] 1055 – Expression #1 of ORDER BY clause is not in GROUP BY clause and contains nonaggregated column ‘information_schema.PROFILING.SEQ’ which is not functionally dependent on columns in GROUP BY clause; this is incompatible with sql_mode=only_full_group_by

解决办法

1、查看 sql_mode

select @@global.sql_mode;

2、查出来的值

ONLY_FULL_GROUP_BY,STRICT_TRANS_TABLES,NO_ZERO_IN_DATE,NO_ZERO_DATE,ERROR_FOR_DIVISION_BY_ZERO,NO_AUTO_CREATE_USER,NO_ENGINE_SUBSTITUTION

3、去掉 ONLY_FULL_GROUP_BY ,重新设置值

set @@global.sql_mode ='STRICT_TRANS_TABLES,NO_ZERO_IN_DATE,NO_ZERO_DATE,ERROR_FOR_DIVISION_BY_ZERO,NO_AUTO_CREATE_USER,NO_ENGINE_SUBSTITUTION';

4、修改 my.cnf ,添加以下行

sql_mode=STRICT_TRANS_TABLES,NO_ZERO_IN_DATE,NO_ZERO_DATE,ERROR_FOR_DIVISION_BY_ZERO,NO_AUTO_CREATE_USER,NO_ENGINE_SUBSTITUTION;

设置的值和第3步的值一样,该操作要重启 mysql 服务。

MySQL 读写分离的主从数据库配置

准备两台服务器,都安装 mysql 服务器。主服务器称为 master, 从服务器称为 slave 。前提要设置好防火墙,保证网络通畅。

master 配置

配置 my.cnf

[mysqld]
#bind-address = 127.0.0.1    注释掉

server-id = 1
log_bin = /var/log/mysql/mysql-bin.log
relay_log = /var/log/mysql/mysql-relay-bin.log

继续阅读

centos7 安装 mysql

wget http://dev.mysql.com/get/mysql57-community-release-el7-8.noarch.rpm
yum localinstall mysql57-community-release-el7-8.noarch.rpm
mysql-community-server

可以修改 /etc/yum.repos.d/mysql-community.repo 源,改变默认安装的mysql版本。比如要安装5.6版本,将5.7源的 enabled=1 改成 enabled=0 。然后再将5.6源的 enabled=0 改成 enabled=1 即可。

CentOS 7下yum安装MariaDB

CentOS 7下mysql下替换成MariaDB了。

把以下内容放到 /etc/yum.repos.d/MariaDB.repo 文件中

# MariaDB 10.4 CentOS repository list - created 2019-11-27 06:40 UTC
# http://downloads.mariadb.org/mariadb/repositories/
[mariadb]
name = MariaDB
baseurl = http://yum.mariadb.org/10.4/centos7-amd64
gpgkey=https://yum.mariadb.org/RPM-GPG-KEY-MariaDB
gpgcheck=1

更多发行版:https://downloads.mariadb.org/mariadb/repositories/

安装

yum install mariadb mariadb-server
systemctl start mariadb   #启动mariadb
systemctl enable mariadb  #设置开机自启动
mysql_secure_installation #设置root密码等相关
mysql -uroot -p           #测试登录

phpmyadmin.pma_table_uiprefs doesn’t exist

在使用 phpmyadmin 管理 mysql 时,出现 phpmyadmin.pma_table_uiprefs doesn't exist ,快速解决办法如下:

  1. On the shell: locate create_tables.sql.
  2. import /usr/share/doc/phpmyadmin/examples/create_tables.sql.gz using phpMyAdmin.
  3. open /etc/phpmyadmin/config.inc.php and edit lines 81-92: change pma_bookmark to pma__bookmark and so on.

Mysql彻底卸载重装

sudo apt-get purge mysql*
sudo apt-get autoremove
sudo apt-get autoclean
sudo rm -rf /var/log/mysql
sudo rm -rf /var/log/mysql.*
sudo rm -rf /var/lib/mysql
sudo apt-get install mysql-server --fix-missing --fix-broken