一、安裝配置mysql
- 1、新建文件琼开、配置倉庫源
編輯創(chuàng)建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柜候、啟動(dòng)
systemctl start mariadb(通過yum下載的,可以使用systemctl管理)
-
5躏精、初始化
mysql_secure_installation
6渣刷、登錄
mysql -uroot -p
密碼
7、修改密碼
set password = PASSWORD('redhat123');
8矗烛、創(chuàng)建普通用戶辅柴,遠(yuǎn)程登錄
創(chuàng)建用戶
create user '用戶名'@'%' identified by '密碼';
給新用戶授權(quán):
grant all privileges on *.* to '用戶名'@'%' identified by '密碼';
刷新權(quán)限:
flush privileges;
使用cdm終端登錄驗(yàn)證:
mysql -u用戶名 -p -h 10.0.0.10 輸入密碼
- 9、新用戶沒授權(quán)瞭吃,會(huì)有權(quán)限限制
MariaDB [(none)]>證明沒有使用數(shù)據(jù)庫
use mysql; Access denied for user 'xxx'@'%' to database 'mysql'
新建的普通用戶沒有權(quán)限碌嘀,需要切換到root用戶。
root用戶下:
use mysql;
Database change
MariaDB [mysql]>證明已使用mysql
查看創(chuàng)建的用戶:
select host,user,password from user where user='hui';
10歪架、權(quán)限
對用戶開通所有的權(quán)限:grant all privileges on *.* to username@'%';
查看用戶的權(quán)限:show grants for username@'%';
移除權(quán)限(使用root用戶):revoke all privileges on *.* from username@'%';
11股冗、設(shè)置編碼 (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
查看編碼相關(guān)信息:\s (進(jìn)去后執(zhí)行)
- 12、關(guān)閉防火墻
mysql遠(yuǎn)程登錄授權(quán)配置:
注意攒霹!關(guān)閉防火墻导俘。、剔蹋。。辅髓。泣崩。這樣就不會(huì)再出莫名其妙的bug了少梁。。矫付。
iptables -F #清空防火墻規(guī)則
#關(guān)閉防火墻
systemctl stop firewalld
#永久關(guān)閉防火墻開機(jī)自啟
systemctl disable firewalld
- 13凯沪、mysql的備份和恢復(fù)
創(chuàng)建數(shù)據(jù)庫:create database s12;
備份:mysqldump -u root -p --all-databases > /tmp/db.dump
刪除:drop database s12;
恢復(fù)(兩種方式):
1.登錄數(shù)據(jù)庫后:source /tmp/db.dump
2.在登錄時(shí)候,進(jìn)行數(shù)據(jù)寫入:mysql -uroot -p < /tmp/db.dump
- 14买优、查看端口號是否被占用
lsof -i:3306
netstat -tunlp|grep 3306
二妨马、mysql主從復(fù)制
主從復(fù)制,就是為了數(shù)據(jù)庫安全杀赢『娑澹‘主數(shù)據(jù)庫’寫入,‘從數(shù)據(jù)庫’可以檢測到并更新(兩個(gè)不同的機(jī)器)脂崔。
(1) master將改變記錄到二進(jìn)制日志(binary log)中(這些記錄叫做二進(jìn)制日志事件滤淳,binary log events);
(2) slave將master的binary log events拷貝到它的中繼日志(relay log)砌左;
(3) slave重做中繼日志中的事件脖咐,將改變反映它自己的數(shù)據(jù)
-
1、master主庫設(shè)置
1汇歹,要配置文件就得先停掉進(jìn)程
查看數(shù)據(jù)庫狀態(tài):systemctl status mariadb
停mariadb:systemctl stop mariadb
2屁擅,修改配置文件
server-id服務(wù)的唯一標(biāo)識(主從之間都必須不同);log-bin啟動(dòng)二進(jìn)制日志名稱為mysql-bin
vim /etc/my.cnf
[mysqld]
server-id=1
log-bin=mysql-bin
重啟mariadb
systemctl start mariadb
3产弹,再裝一個(gè)虛擬機(jī)模擬"從機(jī)器數(shù)據(jù)庫"
一樣的root用戶root1234(虛擬機(jī)的root用戶和數(shù)據(jù)庫的root用戶不要搞混)
4派歌,查看master的狀態(tài):show master status; binary log文件的行數(shù)從313行開始
File是二進(jìn)制日志文件名,Position 是日志開始的位置取视。后面從庫會(huì)用到 后面從庫會(huì)用到 O踉怼!
+------------------+----------+--------------+------------------+
| File | Position | Binlog_Do_DB | Binlog_Ignore_DB |
+------------------+----------+--------------+------------------+
| mysql-bin.000001 | 313 | | |
+------------------+----------+--------------+------------------+
5作谭,master主庫添加從庫賬號
1.新建用于主從同步的用戶huige,允許登錄的從庫是'%'
create user 'huige'@'%' identified by 'huige';
1.1.題外話:如果提示密碼太簡單不復(fù)合策略加在前面加這句
mysql> set global validate_password_policy=0;
2稽物,給從庫賬號授權(quán),說明給huige從庫復(fù)制的權(quán)限,在任何機(jī)器上復(fù)制
grant replication slave on *.* to 'huige'@'%';
3折欠,檢查主庫創(chuàng)建的賬號信息
select user,host from mysql.user;
+---------+-----------+
| user | host |
+---------+-----------+
| huige | % |
| root | 127.0.0.1 |
| root | ::1 |
| root | localhost |
+---------+-----------+
4贝或,檢查授權(quán)賬號的權(quán)限
show grants for huige@'%';
6,實(shí)現(xiàn)對主數(shù)據(jù)庫鎖表只讀锐秦,防止數(shù)據(jù)寫入咪奖,數(shù)據(jù)復(fù)制失敗
flush table with read lock;
unlock tables;解鎖;
7酱床,鎖表后羊赵,一定要單獨(dú)再打開一個(gè)SSH窗口,導(dǎo)出數(shù)據(jù)庫的所有數(shù)據(jù),用于從數(shù)據(jù)庫的寫入
[root@my ~ 19:32:45]#mysqldump -uroot -p --all-databases > /tmp/all.dump
8昧捷,登錄新建的從虛擬機(jī)闲昭,slave 進(jìn)行網(wǎng)卡配置,重啟網(wǎng)卡靡挥,等初始化
9序矩,將主庫的數(shù)據(jù)備份文件,scp到從庫機(jī)器上跋破,然后從庫mysql導(dǎo)入數(shù)據(jù)
scp /tmp/all.dump root@10.0.0.11:/opt/
10簸淀,副虛擬機(jī)安裝mysql:
yum install mariadb-server
啟動(dòng)一下
systemctl start mariadb
-
2、slave從庫設(shè)置
1毒返,登錄數(shù)據(jù)庫租幕,為保持?jǐn)?shù)據(jù)一致性,導(dǎo)入數(shù)據(jù)
source /opt/all.dump
2饿悬,配置從數(shù)據(jù)庫的配置文件:
vi /etc/my.cnf
[mysqld]
server-id=3
3令蛉,重啟:systemctl restart mariadb
4,再次登錄從庫狡恬,就需要輸入密碼了珠叔,因?yàn)橹鲙斓拿艽a都倒過來了
mysql -uroot -p (root用戶) 密碼:和主庫密碼一樣
5,主庫查看是否開啟了二進(jìn)制日志功能:
show variables like 'log_bin';
+---------------+-------+
| Variable_name | Value |
+---------------+-------+
| log_bin | ON |
+---------------+-------+
查看server_id
show variables like 'server_id';
6弟劲, 查看一下主服務(wù)器的狀態(tài):
show master status;
+------------------+----------+--------------+------------------+
| File | Position | Binlog_Do_DB | Binlog_Ignore_DB |
+------------------+----------+--------------+------------------+
| mysql-bin.000002 | 327 | | |
+------------------+----------+--------------+------------------+
從機(jī)執(zhí)行命令:
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祷安, 啟動(dòng)從庫的同步開關(guān),測試主從復(fù)制的情況
start slave;
-
3兔乞、測試查看
1汇鞭, 查看復(fù)制狀態(tài)
show slave status\G;
這兩個(gè)參數(shù)都是yes,代表主從同步成功:
Slave_IO_Running: Yes
Slave_SQL_Running: Yes
2庸追, 在主服務(wù)器上show databases; create databases s11111;
在從服務(wù)器上show databases; 即可查看霍骄,也有此數(shù)據(jù)庫。