一、安装配置mysql
- 1、新建文件、配置仓库源
编辑创建mariadb.repo仓库文件
vi /etc/yum.repos.d/MariaDB.repo
- 2、添加repo仓库配置
[mariadb]
name = MariaDB
baseurl = http://yum.mariadb.org/10.1/centos7-amd64
gpgkey=https://yum.mariadb.org/RPM-GPG-KEY-MariaDB
gpgcheck=1
3、下载
yum install MariaDB-server MariaDB-client -y
4、启动
systemctl start mariadb(通过yum下载的,可以使用systemctl管理)
-
5、初始化
mysql_secure_installation
1.1mysql初始化.png 6、登录
mysql -uroot -p
密码
7、修改密码
set password = PASSWORD('redhat123');
8、创建普通用户,远程登录
创建用户
create user '用户名'@'%' identified by '密码';
给新用户授权:
grant all privileges on *.* to '用户名'@'%' identified by '密码';
刷新权限:
flush privileges;
使用cdm终端登录验证:
mysql -u用户名 -p -h 10.0.0.10 输入密码
- 9、新用户没授权,会有权限限制
MariaDB [(none)]>证明没有使用数据库
use mysql; Access denied for user 'xxx'@'%' to database 'mysql'
新建的普通用户没有权限,需要切换到root用户。
root用户下:
use mysql;
Database change
MariaDB [mysql]>证明已使用mysql
查看创建的用户:
select host,user,password from user where user='hui';
10、权限
对用户开通所有的权限:grant all privileges on *.* to username@'%';
查看用户的权限:show grants for username@'%';
移除权限(使用root用户):revoke all privileges on *.* from username@'%';
11、设置编码 (mysql的配置文件,在Linux中是
my.cnf
在 windows中是my.ini
)
vim /etc/my.cnf
写入配置:
[mysqld]
character-set-server=utf8
collation-server=utf8_general_ci
log-error=/var/log/mysqld.log
[client]
default-character-set=utf8
[mysql]
default-character-set=utf8
修改完配置文件,需要重启mysql,使得生效
systemctl stop mariadb
systemctl start mariadb
查看编码相关信息:\s (进去后执行)
- 12、关闭防火墙
mysql远程登录授权配置:
注意!关闭防火墙。、。。。。这样就不会再出莫名其妙的bug了。。。
iptables -F #清空防火墙规则
#关闭防火墙
systemctl stop firewalld
#永久关闭防火墙开机自启
systemctl disable firewalld
- 13、mysql的备份和恢复
创建数据库:create database s12;
备份:mysqldump -u root -p --all-databases > /tmp/db.dump
删除:drop database s12;
恢复(两种方式):
1.登录数据库后:source /tmp/db.dump
2.在登录时候,进行数据写入:mysql -uroot -p < /tmp/db.dump
- 14、查看端口号是否被占用
lsof -i:3306
netstat -tunlp|grep 3306
二、mysql主从复制
主从复制,就是为了数据库安全。‘主数据库’写入,‘从数据库’可以检测到并更新(两个不同的机器)。
(1) master将改变记录到二进制日志(binary log)中(这些记录叫做二进制日志事件,binary log events);
(2) slave将master的binary log events拷贝到它的中继日志(relay log);
(3) slave重做中继日志中的事件,将改变反映它自己的数据
-
1、master主库设置
1,要配置文件就得先停掉进程
查看数据库状态:systemctl status mariadb
停mariadb:systemctl stop mariadb
2,修改配置文件
server-id服务的唯一标识(主从之间都必须不同);log-bin启动二进制日志名称为mysql-bin
vim /etc/my.cnf
[mysqld]
server-id=1
log-bin=mysql-bin
重启mariadb
systemctl start mariadb
3,再装一个虚拟机模拟"从机器数据库"
一样的root用户root1234(虚拟机的root用户和数据库的root用户不要搞混)
4,查看master的状态:show master status; binary log文件的行数从313行开始
File是二进制日志文件名,Position 是日志开始的位置。后面从库会用到 后面从库会用到 !!
+------------------+----------+--------------+------------------+
| File | Position | Binlog_Do_DB | Binlog_Ignore_DB |
+------------------+----------+--------------+------------------+
| mysql-bin.000001 | 313 | | |
+------------------+----------+--------------+------------------+
5,master主库添加从库账号
1.新建用于主从同步的用户huige,允许登录的从库是'%'
create user 'huige'@'%' identified by 'huige';
1.1.题外话:如果提示密码太简单不复合策略加在前面加这句
mysql> set global validate_password_policy=0;
2,给从库账号授权,说明给huige从库复制的权限,在任何机器上复制
grant replication slave on *.* to 'huige'@'%';
3,检查主库创建的账号信息
select user,host from mysql.user;
+---------+-----------+
| user | host |
+---------+-----------+
| huige | % |
| root | 127.0.0.1 |
| root | ::1 |
| root | localhost |
+---------+-----------+
4,检查授权账号的权限
show grants for huige@'%';
6,实现对主数据库锁表只读,防止数据写入,数据复制失败
flush table with read lock;
unlock tables;解锁;
7,锁表后,一定要单独再打开一个SSH窗口,导出数据库的所有数据,用于从数据库的写入
[root@my ~ 19:32:45]#mysqldump -uroot -p --all-databases > /tmp/all.dump
8,登录新建的从虚拟机,slave 进行网卡配置,重启网卡,等初始化
9,将主库的数据备份文件,scp到从库机器上,然后从库mysql导入数据
scp /tmp/all.dump root@10.0.0.11:/opt/
10,副虚拟机安装mysql:
yum install mariadb-server
启动一下
systemctl start mariadb
-
2、slave从库设置
1,登录数据库,为保持数据一致性,导入数据
source /opt/all.dump
2,配置从数据库的配置文件:
vi /etc/my.cnf
[mysqld]
server-id=3
3,重启:systemctl restart mariadb
4,再次登录从库,就需要输入密码了,因为主库的密码都倒过来了
mysql -uroot -p (root用户) 密码:和主库密码一样
5,主库查看是否开启了二进制日志功能:
show variables like 'log_bin';
+---------------+-------+
| Variable_name | Value |
+---------------+-------+
| log_bin | ON |
+---------------+-------+
查看server_id
show variables like 'server_id';
6, 查看一下主服务器的状态:
show master status;
+------------------+----------+--------------+------------------+
| File | Position | Binlog_Do_DB | Binlog_Ignore_DB |
+------------------+----------+--------------+------------------+
| mysql-bin.000002 | 327 | | |
+------------------+----------+--------------+------------------+
从机执行命令:
change master to master_host='10.0.0.10',
master_user='huige',
master_password='huige',
master_log_file='mysql-bin.000002',
master_log_pos=327;
7, 启动从库的同步开关,测试主从复制的情况
start slave;
-
3、测试查看
1, 查看复制状态
show slave status\G;
这两个参数都是yes,代表主从同步成功:
Slave_IO_Running: Yes
Slave_SQL_Running: Yes
2, 在主服务器上show databases; create databases s11111;
在从服务器上show databases; 即可查看,也有此数据库。