数据库YUM安装
从官网中或其他地方下载rpm安装文件
官网网址:https://dev.mysql.com/downloads/mysql/
数据库配置
编辑数据库配置文件my.cnf
数据库启动时默认读取的配置文件为/etc/my.cnf文件,我们可以在这个文件中对数据库进行基础的配置和进行一些参数的优化,如果该文件配置错误将导致数据库无法启动,具体各参数的的定义可以从网上查找。基于本人在调优方便也是小白,推荐一位大神提供的在线生成网址:
https://imysql.com/my-cnf-wizard.html
创建数据库相关目录
因为mysql在操作系统中默认使用的是mysql用户进行的操作,需要先新建mysql用户,并给其赋予权限
创建组
[root@centos7 mysql]# groupadd mysql
创建用户(-s /bin/false参数指定mysql用户仅拥有所有权,而没有登录权限)
[root@centos7 mysql]# useradd -r -g mysql -s /bin/false mysql
修改mysql配置目录的权限
[root@centos7 mysql]# cd /data/mysql
[root@centos7 mysql]# chown -R mysql:mysql ./
chmod -R 777 /usr/local/mysql/
chmod -R 777 /data/mysql/
说明:因为mysql需要读写文件 所以需要将mysql关联的文件夹的权限赋予给mysql用户
启动数据库
启动数据库
[root@localhost mysql]# systemctl start mysqld
数据库的进程名为 mysqld
如果在执行启动命令出现了异常 需要根据提示讲异常解决
如可通过查看数据库的状态system status mysqld 、查看配置位置文件夹中的error.log文件等。
第一次执行数据库启动命令 mysql 将自动在按照配置的(my.cnf配置,如果没有在my.cnf中配置 ,则使用mysql默认的参数 )初始化数据库相关的所有文件 如 第一次启动 在/data/mysql文件夹中初始化了以下文件
说明:
数据库启动时将会根据配置信息(如my.cnf、命令行、默认)去检查指定的目录(初次安装配置、更换后配置中的地址路径)下是否初始化了数据库相关的初始数据(如mysql、sys库等), 如果没有,都将初始化重新生成
mysqldb.pid、mysql.sock、mysql.sock.lock 等文件是在每次数据库启动时创建 数据库关闭时系统将自动删除的 有的时候可能会因为数据库异常关闭(如断电等),导致这些文件未清除而导致再次启动数据库时失败,这时直接删除掉这些文件再启动即可
修改密码和远程访问限制
从配置的error.log中查找到数据库第一次启动时mysql默认给生成的密码
cat /data/mysql/error.log | grep 'A temporary password'
用改密码登录进mysql
mysql -u root -p
执行密码修改语句
ALTER USER 'root'@'localhost' IDENTIFIED WITH mysql_native_password BY 'new@@password';
mysql默认是不允许远程访问的
开启外部 访问权限 需要修改登录账号的host限定
如开启root的远程访问权限(开启需要谨慎)
mysql> use mysql
mysql> update user set user.Host='%'where user.User='root';
mysql> flush privileges;
mysql> quit
说明 % 表示不作任何访问限制
然后就可以在远程电脑中对改数据库进行远程访问了
记住一定要开发3306端口 或 关闭防火墙
防火墙
CentOS 7.0默认使用的是firewall作为防火墙,使用iptables必须重新设置一下
1、直接关闭防火墙
systemctl stop firewalld.service #停止firewall
systemctl disable firewalld.service #禁止firewall开机启动
2、设置 iptables service
yum -y install iptables-services
如果要修改防火墙配置,如增加防火墙端口3306
vi /etc/sysconfig/iptables
增加规则
-A INPUT -m state --state NEW -m tcp -p tcp --dport 3306 -j ACCEPT
保存退出后
systemctl restart iptables.service #重启防火墙使配置生效
systemctl enable iptables.service #设置防火墙开机启动
最后重启系统使设置生效即可。
主从
mysql8 如果服务器资源充足 从安全考虑还是推荐mgr
MySQL 主从复制的方式有多种,本文主要演示基于基于日志(binlog)的主从复制方式。
MySQL 主从复制(也称 A/B 复制) 的原理
Master将数据改变记录到二进制日志(binary log)中,也就是配置文件log-bin指定的文件,
这些记录叫做二进制日志事件(binary log events);
my.conf 中配置的log_bin 文件名
配置文件夹中的log文件
Slave 通过 I/O 线程读取 Master 中的 binary log events 并写入到它的中继日志(relay log);
Slave 重做中继日志中的事件, 把中继日志中的事件信息一条一条的在本地执行一次,完
成数据在本地的存储, 从而实现将改变反映到它自己的数据(数据重放)。
环境Centos7.6 ,mysql8.0
Mysql主从配置
10.10.0.30—Master,10.10.0.31–Slave
mysql主从配置前提条件要求:
1、服务器版本一致
2、主服务器日志必须二进制
3、主服务器-从服务器库的数据要求一致
4、从数据库不能做写操作
2.主服务器配置
2.1、修改my.cnf,添加
[mysqld]
log-bin=/data/mysql/mybinlog # 也可配置为相对地址 mybinlog
server-id=30
2.2、重启mysql服务
service mysqld restart
2.3、配置mysql
在mysql数据库中,建立用户同步数据库的账号:
create user 'repl'@'%' identified with 'mysql_native_password' by 'repl@@password';
说明:如果从安全角度考虑创建的用户访问范围不要设置成 % ,可根据从库地址设置为’repl’@‘10.10.0.31’
给repl用户权限:
GRANT replication slave ON *.* TO 'repl'@'%';
GRANT ALL privileges ON *.* TO 'repl'@'%';
flush privileges;
账号请根据手机的进行修改
查看mysql主服务器日志:
show master status
或
show master status\G
记录下File和Position的值,一会儿再从服务器上配置时使用。
3.从服务器配置
3.1、修改my.cnf,添加
[mysqld]
log-bin=/data/mysql/mybinlog # 也可配置为相对地址 mybinlog
server-id=31
说明 如果从库单单只作为从库的话 log-bin 其实是可以不设置的
3.2、重启mysql.server服务
service mysqld restart
3.3、在从服务器设置主服务器,实现主从配置
change master to master_host='10.10.0.31',master_user='repl',master_password='repl@@password',master_log_file='mybinlog.000004' ,master_log_pos=2627;
说明:
CHANGE MASTER TO
MASTER_HOST=‘10.10.0.31’, #Master的ip
MASTER_USER=‘repl’,#你创建的用户
MASTER_PASSWORD=‘repl@@password’, #创建的repl用户的password
MASTER_LOG_FILE=‘mybinlog.000004’, #主服务器上的File
MASTER_LOG_POS=2627; #刚刚保存的position
3.4、开启主从
start slave
3.5、检查从服务器状态
show slave status\G
Slave_IO_Running 和 Slave_SQL_Running 为Yes ,则说明主从搭建成功
我们可以在主库中新建表 看再从库中是否通用创建成功