版权声明:本文为博主原创文章,未经博主允许不得转载。 https://blog.csdn.net/a656678879/article/details/88015035
环境信息
centos7.2
安装目录
DOCKER安装mysql实现主从复制
1. 安装前工作
在安装前需要确定现在这个系统有没有 mysql,如果有那么必须卸载(在 centos7 自带的是 mariaDb 数据库,所以第一步是卸载数据库)。
卸载系统自带的Mariadb:
查看mariadb数据库:
rpm -qa | grep mariadb
卸载mariadb数据库:
rpm -e --nodeps mariadb文件名
卸载已安装的mysql:
查看 mysql 数据库:
rpm -qa | grep -i mysql
卸载 mysql 数据库:
rpm -e mysql文件名 # 如果有关联文件,不能直接卸载。可以用一下命令强制卸载:rpm -e --nodeps mysql文件名)
删除etc目录下的my.cnf文件:
rm /etc/my.cnf
2. 安装MYSQL步骤
mysql官方(http://dev.mysql.com/downloads/repo/yum/)获取Yum Repository。
获取rpm镜像文件
wget https://dev.mysql.com/get/mysql57-community-release-el7-11.noarch.rpm
md5校验文件
md5sum mysql57-community-release-el7-11.noarch.rpm ##md5校验
安装mysql
rpm -ivh mysql57-community-release-el7-11.noarch.rpm
yum -y install mysql-server
设置mysql为自启动
systemctl enable mysqld #设置开机启动
systemctl disable mysqld #关闭开机启动
重启mysql服务
service mysqld restart [start, stop, restart, try-restart, reload, force-reload, status] #后面的都是可选项
查看3306端口是否启动
netstat -ln | grep 3306
首次查看自动产生的随即密码
grep "password" /var/log/mysqld.log
或者使用
cat /var/log/mysqld.log | grep password
修改密码策略(支持简单密码)也可以看下一步的配置文件关闭密码插件
set global validate_password_policy=0; ###基于密码长度(修改为LOW方式)
set global validate_password_length=1 ###
修改配置文件(vim /etc/my.cnf)
编辑配置文件
vim /etc/my.cnf
插入以下文件
[mysqld]
datadir=/var/lib/mysql
socket=/var/lib/mysql/mysql.sock
symbolic-links=0
log-error=/var/log/mysqld.log
pid-file=/var/run/mysqld/mysqld.pid
validate_password=off
default-storage-engine=INNODB
character-set-server=utf8
collation-server=utf8_general_ci
登录并修改密码
登录
mysql -uroot -p
修改密码
set password=password('新密码');
# 或者set PASSWORD = PASSWORD('新密码'); 也可以
生效
flush privileges; #刷新
添加远程访问权限
#登录mysql
mysql> use mysql
mysql> update user set host='%' where user='root';
mysql> select host,user from user;
mysql> flush privileges;
#退出mysql,重启mysql服务生效
mysql导入DATETIME字段数据时遇到错误incorrect datetime value ‘0000-0-0 00:00:00’ for column
mysql允许将’0000-00-00’保存为“伪日期”,如果不使用no_zero_date sql模式就可以啦
查看模式
show variables like 'sql_mode';
设置模式(把上面查出来的复制一遍然后去掉no_zero_date即可)
set global sql_mode='ONLY_FULL_GROUP_BY,STRICT_TRANS_TABLES,NO_ZERO_IN_DATE,ERROR_FOR_DIVISION_BY_ZERO,NO_AUTO_CREATE_USER,NO_ENGINE_SUBSTITUTION';
如果无效果,那就修改mysql的配置文件【my.ini】
vim /etc/my.ini
追加
sql_mode=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
flush privileges;
重启
总结
NO_ZERO_IN_DATE和NO_ZERO_DATE 去掉是取消对日期中有0的限制
ONLY_FULL_GROUP_BY 去掉非聚合列的检查(就是有时操作的时候报错但是已经执行成功了)