安装教程
#删除系统默认的数据库rpm -qa|grep mariadbrpm -e --nodeps mariadb-libs-5.5.64-1.amzn2.x86_64#开始安装yum -y install gcc gcc-c++ kernel-develwget https://repo.mysql.com//mysql80-community-release-el7-3.noarch.rpmrpm -ivh mysql80-community-release-el7-3.noarch.rpm#查询安装源中的版本信息yum repolist all | grep mysql#修改需要安装的版本号(1启用0禁用,默认安装8.0,选择5.7server)vim /etc/yum.repos.d/mysql-community.repoyum install mysql-community-server#如果安装中下载安装包太慢,可以直接根据地址下载在rpm安装包,路径再/var/cache/yum
授权操作
#启动|停止|重启|状态service mysqld start|stop|restart|status#查看初始化密码grep 'temporary password' /var/log/mysqld.log#连接mysqlmysql -u root -p#修改密码规则mysql> set global validate_password_policy=0;mysql> set global validate_password_length=1;mysql> set global validate_password_mixed_case_count=2;#修改密码mysql> ALTER USER 'root'@'localhost' IDENTIFIED BY '123456';#允许远程登录(先登录MYSQL)mysql> use mysql#‘%’代表不限制IP,*.*第一个表示数据库,第二个表示表mysql> GRANT ALL ON *.* to root@'%' IDENTIFIED BY '123456';mysql> FLUSH PRIVILEGES;#查看日志路径mysql> show variables like 'log_%';#查看主节点状态mysql> show master status;
Mysql系统设置
vim /etc/my.cnf#大小写敏感(此参数不可以动态修改,必须重启数据库)#1:表名存储在磁盘是小写的,但是比较的时候是不区分大小写#2:表名存储为给定的大小写但是比较的时候是小写的#0:表名存储为给定的大小和比较是区分大小写的lower_case_table_names=1#最大连接数max_connections=512
搭建主从
主从搭建之前一定要保证从库和主库之间的数据一致,不然会无法同步
1.要么主从数据库都是新装的
2.要么备份主数据库的记录后重新执行
#主服务配置#1.授权给从服务器,允许进行连接登录,其中如果不需要限制登录地址,可以将IP地址更换为一个%GRANT REPLICATION SLAVE ON *.* to 'username'@'ip' identified by 'password';FLUSH PRIVILEGES;#2.修改主库配置文件,开启 binlog ,并设置 server-id ,每次修改配置文件后都要重启 MySQL 服务才会生效vim /etc/my.cnf#log_bin:同步的日志路径及文件名,一定注意这个目录要是 MySQL 有权限写入的(我这里是偷懒了,直接放在了下面那个datadir下面)。#server-id: MySQL 在主从环境下的唯一标志符,给个任意数字,注意不能和从机重复。#binlog-do-db:要同步的数据库名,当从机连上主机后,只有这里配置的数据库才会被同步,其他的不会被同步。多个数据库配置多个#bin_log:binlog格式,具体百度#expire_logs_days:过期时间[mysqld]log_bin=/var/lib/mysql/binlogserver-id=128binlog-do-db = webistebinlog_format=MIXEDexpire_logs_days = 30#配置完成后重启mysql,查看主服务状态mysql> show master status;

#从服务配置#如果丛服务是虚拟机复制的,需要更改uuid /var/lib/mysql/auto.cnfvim /etc/my.cnf#server-id: MySQL 在主从环境下的唯一标志符,给个任意数字,注意不能和从机重复。#slave-skip-errors:跳过错误#read_only:只允许读操作,对于拥有super权限无用[mysqld]server-id=128slave-skip-errors=allread_only=1#保存后进入MySQL#master_log_file:主服务binlog开始文件#master_log_pos:开始位置,一定要和主机保持一致,具体查看主机节点状态(查看命令行)#master_host:主机地址#master_user:用户#master_password:密码#master_port:端口#链接同步mysql> change master to master_host='192.168.0.101',master_port=3306,master_user='root',master_password='123456',master_log_file='binlog.000002',master_log_pos=154;#启动|停止mysql> start|stop slave;#查看状态mysql> show slave status\G;#一定要注意状态信息这里YES才会正常运行Slave_IO_Running: YesSlave_SQL_Running: Yes
问题解决
Q:Expression #1 of SELECT list is not in GROUP BY clause and contains nonaggregated column ‘goteam_test’
原因:MySQL 5.7.5后only_full_group_by成为sql_mode的默认选项之一,这可能导致一些sql语句失效。
vim /etc/my.cnf[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
