1、下载mysql
mysql最新版的官网下载地址:https://dev.mysql.com/downloads/mysql/5.7.html#downloads。如果新的项目,推荐mysql5.7或更新版本,因为它比老版本的配置文件更少,更容易配置和管理,安装方式更加自动化。
2、解压:
下载后的文件名:mysql-5.7.26-el7-x86_64.tar
先tar -xvf mysql-5.7.26-el7-x86_64.tar,解压后为mysql-5.7.26-el7-x86_64.tar.gz和mysql-test-5.7.26-el7-x86_64.tar.gz,再使用tar -zxvf mysql-5.7.26-el7-x86_64.tar.gz解压,将要使用的mysql进行解压
3、安装相关的组件
yum install libaio
yum install libnuma
或者:yum install –y autoconf automake imake libxml2-devel expat-devel cmake gcc gcc-c++ libaio libaio-devel bzr bison libtool ncurses5-devel
将解压后的文件夹移到其他目录并修改名称:
mv mysql-5.7.26-el7-x86_64 /root/mysql-5.7.26
4、创建mysql组和用户
cat /etc/group | grep mysql
cat /etc/passwd | grep mysql
groupadd mysql
useradd -r -g mysql mysql
(useradd -r -g mysql mysql :参数表示mysql用户是系统用户,不可用于登录系统)
将mysql安装目录指定用户和组:chown -R mysql:mysql /root/mysql-5.7.26
5、修改support-files/mysql.server文件
cp -a ./support-files/mysql.server /etc/init.d/mysqld(拷贝mysql服务脚本到系统目录)
export PATH=$PATH:/root/mysql-5.7.26/bin/(临时将mysql的bin目录指定到环境变量,永久生效可以加到/etc/profile中)
6、修改/etc/my.cnf文件(以下例子)
[client]
#客户端设置
port=3336
socket=/root/mysql-5.7.26/mysql.sock
default-character-set=utf8mb4
[mysqld]
user=mysql
port=3336
server-id=1
#安装目录
basedir=/root/mysql-5.7.26
#数据库存放目录
datadir=/root/mysql-5.7.26/data
socket=/root/mysql-5.7.26/mysql.sock
log-error=/root/mysql-5.7.26/mysqld.log
pid-file=/root/mysql-5.7.26/mysqld.pid
#系统数据库编码设置,排序规则
character_set_server=utf8mb4
collation_server=utf8mb4_bin
back_log=1024
explicit_defaults_for_timestamp=ON
lower_case_table_names = 0
sql_mode=STRICT_TRANS_TABLES,NO_ZERO_IN_DATE,NO_ZERO_DATE,ERROR_FOR_DIVISION_BY_ZERO,NO_AUTO_CREATE_USER,NO_ENGINE_SUBSTITUTION
max_connections=512
max_connect_errors=1000000
table_open_cache=1024
max_allowed_packet=8M
thread_stack=256K
thread_cache_size=384
skip-external-locking
interactive_timeout=600
wait_timeout=3600
log_timestamps=SYSTEM
log-error=/root/mysql-5.7.26/data/error.log
#默认使用InnoDB存储引擎
default_storage_engine=InnoDB
innodb_buffer_pool_size=64M
innodb_purge_threads=1
innodb_log_buffer_size=2M
innodb_log_file_size=128M
innodb_lock_wait_timeout=120
bulk_insert_buffer_size=32M
myisam_sort_buffer_size=8M
# MySQL重建索引时所允许的最大临时文件的大小
myisam_max_sort_file_size=10G
myisam_repair_threads=1
[mysqldump]
quick
max_allowed_packet=16M
[myisamchk]
key_buffer_size=8M
sort_buffer_size=8M
read_buffer=4M
write_buffer=4M
7、建立mysqld.log文件(可以不加)
vim mysqld.log
:wq
chmod 777 mysqld.log
chown mysql:mysql mysqld.log
**由于时间太长忘记这个文件该加在那个目录下了,所以有下面的方法可以做:
1、#skip-grant-tables,加上这个配置,意思是忽略密码验证,这样在没有mysqld.log文件的时候,我们可以不使用密码直接登录,登陆后再修改root的密码,再把这个配置注释,进行重启mysql,这样下次登录就要加密码了
2、如何修改密码:
使用update user set password=password(“新密码”) where user=”用户名”
执行后报错 ERROR 1054(42S22) Unknown column 'password' in ‘field list’
错误的原因是 5.7版本下的mysql数据库下已经没有password这个字段了,password字段改成了authentication_string
使用:update mysql.user set authentication_string=password('*******') where user='*******'; #修改密码成功
最后进行刷新:flush privileges; #立即生效
8、初始化数据库
进入mysql用户:su mysql,保证和mysql相关的目录和文件的用户和组都为mysql,如果有mysql的目录是root的所有者,会失败,这是大坑,切记!!!!!!!
在mysql安装目录下执行以下命令(根据自己的配置进行修改):
bin/mysqld --initialize --user=mysql --basedir=/root/mysql-5.7.26 --datadir=/root/mysql-5.7.26/data --lc_messages_dir=/root/mysql-5.7.26/share --lc_messages=en_US
mysqld --defaults-file=/etc/my.cnf --initialize --user=mysql --basedir=/root/mysql-5.7.26 --datadir=/root/mysql-5.7.26/data --lc_messages_dir=/root/mysql-5.7.26/share --lc_messages=en_US
在mysqld.log文件中查看初始化密码
9、启动服务并进行配置,第一次进入需要修改初始化密码
启动服务:service mysqld start/stop
set password=password('新密码');
flush privileges;
grant all privileges on *.* to 'root'@'%' identified by 'root123';
flush privileges;
设置root用户的权限和可以远程登录
新增用户并设置权限:
grant all privileges on *.* to 'xiaoming'@'%' identified by 'xiaoming124';
10、设置主备同步
按以上方法装两个mysq服务,设置主备同步
1、增加配置参数
在主库进行以下操作:
1、创建做同步的用户,并设置权限
create user 'repl'@'%' identified by 'repl123';
GRANT REPLICATION SLAVE ON *.* TO 'repl'@'%';
2、在住主库的my.cnf增加以下配置
#log-bin设置此参数表示启用binlog功能,并指定路径名称
log-bin=/vnum/mysql/mysql-bin
sync_binlog=0
#设置日志的过期天数
expire_logs_days=7
#binlog_cache_size此参数表示binlog使用的内存大小
binlog_cache_size=1G
#需要同步的库
binlog-do-db=vnumdb
在备库增加以下配置:(备库和主库的serverid要不同)
#需要同步的表
replicate-wild-do-table=vnumdb.%
2、开启主备同步
在主库执行show master slave;(查看binlog文件和位置)
在备库执行如下命令:
CHANGE MASTER TO MASTER_HOST='192.168.21.104',master_port=3336, MASTER_USER='repl', MASTER_PASSWORD='repl123', MASTER_LOG_FILE='mysql-bin.000001', MASTER_LOG_POS=154;
(注意主库的IP、端口、同步的用户、密码、binlog日志和位置)
执行start slave;开启主备同步
查看主备同步的状态:
注:
当主备停止的时候,在备库执行stop slave,执行CHANGE MASTER TO MASTER_HOST='192.168.21.104',master_port=3336, MASTER_USER='repl', MASTER_PASSWORD='repl123', MASTER_LOG_FILE='mysql-bin.000001', MASTER_LOG_POS=154;修改同步的文件和位置,在执行start slave开启主备同步状态。