Mysql安裝
介紹
安裝方法有很多這里我介紹兩種,1、yum 安裝mysql;2、手動安裝mysql
Mysql yum安裝
卸載已有版本
- 查看mysql版本
mysql -v
- 安裝前导匣,我們可以檢測系統(tǒng)是否自帶安裝 MySQL:
rpm -qa | grep mysql - 如果你系統(tǒng)有安裝,那可以選擇進(jìn)行卸載:
rpm -e mysql普通刪除模式
rpm -e --nodeps mysql
強(qiáng)力刪除模式
茸时,如果使用上面命令刪除時贡定,提示有依賴的其它文件,則用該命令可以對其進(jìn)行強(qiáng)力刪除 - 安裝
yum -y install wget
wget http://repo.mysql.com/mysql-community-release-el7-5.noarch.rpm
rpm -ivh mysql-community-release-el7-5.noarch.rpm
yum update
yum install mysql-server
mysql 5.7
wget http://dev.mysql.com/get/mysql57-community-release-el6-7.noarch.rpm
安裝mysql源
yum localinstall mysql57-community-release-el6-7.noarch.rpm
檢查mysql源是否安裝成功
yum repolist enabled | grep "mysql.*-community.*"
- 初始化 MySQL:
mysqld --initialize - 啟動 MySQL:
systemctl start mysqld - 查看 MySQL 運(yùn)行狀態(tài):
systemctl status mysqld
Mysql 手動安裝
下載
參考:http://www.cnblogs.com/feiye512/p/9257687.html
1可都、下載
下載地址:http://dev.mysql.com/downloads/mysql/5.6.html#downloads
下載版本:我這里選擇的5.6.33缓待,通用版,linux下64位
也可以直接復(fù)制64位的下載地址渠牲,通過命令下載:
cd /usr/local/src
wget http://dev.mysql.com/get/Downloads/MySQL-5.6/mysql-5.6.33-linux-glibc2.5-x86_64.tar.gz
- 解壓
tar -zxvf mysql-5.6.33-linux-glibc2.5-x86_64.tar.gz
復(fù)制解壓后的mysql目錄旋炒,mysql目錄不要手動創(chuàng)建
cp -r mysql-5.6.33-linux-glibc2.5-x86_64 /usr/local/mysql - 添加用戶組和用戶
添加用戶組
groupadd mysql
添加用戶mysql 到用戶組mysql
useradd -g mysql mysql
passwd mysql
輸入密碼 123456 - 賦用戶權(quán)限
cd /usr/local/mysql
修改當(dāng)前目錄擁有者為mysql用戶:執(zhí)行命令
/usr/local/mysql
目錄權(quán)限為mysql用戶
chown -R mysql:mysql ./ - 安裝
./scripts/mysql_install_db --user=mysql --datadir=/usr/local/mysql/data/mysql
- 如果遇見錯誤如下:
bash: ./vmware-install.pl: /usr/bin/perl: bad interpreter: 沒有那個文件或目錄
解決方法
yum install perl gcc kernel-devel
yum upgrade kernel kernel-develFATAL ERROR: please install the following Perl modules before executing ./scripts/mysql_install_db:
Data::Dumper
解決方法 :安裝autoconf庫
yum -y install autoconf啟動腳本
cp support-files/mysql.server /etc/init.d/mysqld
chmod 755 /etc/init.d/mysqld
cp support-files/my-default.cnf /etc/my.cnf修改啟動腳本
vi /etc/init.d/mysqld
修改項(xiàng):
basedir=/usr/local/mysql/
datadir=/usr/local/mysql/data/mysql
- 啟動服務(wù)
service mysqld start
Starting MySQL. SUCCESS!
- 測試連接
cd /usr/local
./mysql/bin/mysql -uroot - 加入環(huán)境變量,編輯 /etc/profile签杈,這樣可以在任何地方用mysql命令了
vi /etc/profile
export PATH=$PATH:/usr/local/mysql/bin
source /etc/profile
- 測試連接
mysql -uroot
- 查看運(yùn)行狀態(tài)
service mysqld status
mysql安裝后
問題一:密碼登錄問題
- 跳過密碼
mysql登錄報錯更新密碼(ERROR 1045 (28000))
重置密碼的第一步就是跳過MySQL的密碼認(rèn)證過程瘫镇,方法如下:
vim /etc/my.cnf
注:windows下修改的是my.ini
[mysqld]
skip-grant-tables
重啟
/etc/init.d/mysql restart(有些用戶可能需要使用/etc/init.d/mysqld restart)
或者service mysql restart密碼重置
mysql -uroot
use mysql;
mysql> update user set password=password("root") where user="root";
mysql> flush privileges;然后去掉skip-grant-tables配置文件,重啟即可
問題二:修改mysql遠(yuǎn)程連接權(quán)限
- 創(chuàng)建用戶用來遠(yuǎn)程連接
mysql -uroot
use mysql;
GRANT ALL PRIVILEGES ON *.* TO 'root'@'%' IDENTIFIED BY 'root' WITH GRANT OPTION;
flush privileges;
- 查看是否成功
查詢數(shù)據(jù)庫的用戶(看到如下內(nèi)容表示創(chuàng)建新用戶成功了)
SELECT DISTINCT CONCAT('User: ''',user,'''@''',host,''';') AS query FROM mysql.user; - 修改my.cnf 文件的IP限制配置
修改配置文件
vim /etc/my.cnf
將bind-address = 127.0.0.1
設(shè)置成bind-address = 0.0.0.0(設(shè)備地址)
重新啟動
查看端口號
Show global variables like 'port';
Mysql主從復(fù)制
介紹
首先安裝倆數(shù)據(jù)庫,一個作為主庫,一個作為從庫,安裝步驟如mysql手動安裝.
主從復(fù)制配置過程
主從服務(wù)器分別作以下操作:
版本一致
初始化表答姥,并在后臺啟動mysql
修改root的密碼
兩臺mysql:192.168.101:3306 mysql:192.168.103:3306
Mysql主從復(fù)制
修改配置文件
修改主服務(wù)器master:
vi /etc/my.cnf
[mysqld]
log-bin=mysql-bin
server-id=101
sync_binlog = 1
binlog_checksum = none
binlog_format = mixed
auto-increment-increment = 2
auto-increment-offset = 1
slave-skip-errors = all
詳細(xì)介紹:
server-id=1 #數(shù)據(jù)庫唯一ID铣除,主從的標(biāo)識號絕對不能重復(fù)。#[必須]
log-bin=mysql-bin #開啟bin-log鹦付,并指定文件目錄和文件名前綴#[必須]
binlog-do-db=test #需要同步的數(shù)據(jù)庫尚粘。如果是多個同步庫,就以此格式另寫幾行即可敲长。如果不指明對某個具體庫同步郎嫁,就去掉此行,表示同步所有庫(除了ignore忽略的庫)祈噪。
binlog-ignore-db=mysql #不同步mysql系統(tǒng)數(shù)據(jù)庫泽铛。如果是多個不同步庫,就以此格式另寫幾行辑鲤;也可以在一行盔腔,中間逗號隔開。
sync_binlog = 1 #確保binlog日志寫入后與硬盤同步
binlog_checksum = none #跳過現(xiàn)有的采用checksum的事件遂填,mysql5.6.5以后的版本中binlog_checksum=crc32,而低版本都是binlog_checksum=none
binlog_format = mixed #bin-log日志文件格式铲觉,設(shè)置為MIXED可以防止主鍵重復(fù)。
3吓坚、修改從服務(wù)器slave:
vi /etc/my.cnf
[mysqld]
log-bin=mysql-bin
server-id=103
sync_binlog = 1
binlog_checksum = none
binlog_format = mixed
auto-increment-increment = 2
auto-increment-offset = 2
slave-skip-errors = all
4撵幽、重啟兩臺服務(wù)器的mysql
/etc/init.d/mysql restart
5、在主服務(wù)器上建立帳戶并授權(quán)slave:
mysql -uroot -proot
CREATE USER 'repl'@'%' IDENTIFIED BY '123456';
grant replication slave,replication client on *.* to 'repl'@'192.168.3.%' identified by "123456";
mysql> flush privileges;
mysql> show grants for repl@'192.168.3.%'; 查看指定用戶權(quán)限
一般不用root帳號礁击,%表示所有客戶端都可能連盐杂,只要帳號逗载,密碼正確,此處可用具體客戶端IP代替链烈,如192.168.145.226厉斟,加強(qiáng)安全。
6强衡、登錄主服務(wù)器的mysql擦秽,查詢master的狀態(tài)
mysql>show master status;
+------------------+----------+--------------+------------------+
| File | Position | Binlog_Do_DB | Binlog_Ignore_DB |
+------------------+----------+--------------+------------------+
| mysql-bin.000002 | 318 | | |
+------------------+----------+--------------+------------------+
1 row in set (0.00 sec)
注:執(zhí)行完此步驟后不要再操作主服務(wù)器MYSQL,防止主服務(wù)器狀態(tài)值變化
flush privileges;
配置從服務(wù)器Slave
7漩勤、配置從服務(wù)器Slave:
CREATE USER 'repl'@'%' IDENTIFIED BY '123456';
mysql>change master to master_host='192.168.3.100',master_user='repl',master_password='123456', master_log_file='mysql-bin.000023',master_log_pos=191; //注意不要斷開感挥,318數(shù)字前后無單引號。
如果運(yùn)行報錯:
則運(yùn)行change master to master_auto_position=0
Mysql>start slave; //啟動從服務(wù)器復(fù)制功能
RESET SLAVE; //重置從服務(wù)器復(fù)制功能
stop slave; //停掉從服務(wù)器復(fù)制功能
- 檢查從服務(wù)器復(fù)制功能狀態(tài)
檢查從服務(wù)器復(fù)制功能狀態(tài)
mysql> show slave status\G;
*************************** 1\. row ***************************
Slave_IO_State: Waiting for master to send event
Master_Host: 192.168.2.222 //主服務(wù)器地址
Master_User: mysync //授權(quán)帳戶名越败,盡量避免使用root
Master_Port: 3306 //數(shù)據(jù)庫端口触幼,部分版本沒有此行
Connect_Retry: 60
Master_Log_File: mysql-bin.000004
Read_Master_Log_Pos: 600 //#同步讀取二進(jìn)制日志的位置,大于等于
Exec_Master_Log_Pos
Relay_Log_File: ddte-relay-bin.000003
Relay_Log_Pos: 251
Relay_Master_Log_File: mysql-bin.000004
Slave_IO_Running: Yes //此狀態(tài)必須YES
Slave_SQL_Running: Yes //此狀態(tài)必須YES
注:Slave_IO及Slave_SQL進(jìn)程必須正常運(yùn)行究飞,即YES狀態(tài)置谦,否則都是錯誤的狀態(tài)(如:其中一個NO均屬錯誤)。
以上操作過程亿傅,主從服務(wù)器配置完成媒峡。
flush privileges;
主主復(fù)制
按上面操作反向即可,主主復(fù)制袱蜡,最好將庫鎖住丝蹭,僅僅允許讀,以保證數(shù)據(jù)一致性坪蚁;待主主同步環(huán)境部署后再解鎖;
鎖住后镜沽,就不能往表里寫數(shù)據(jù)敏晤,但是重啟mysql服務(wù)后就會自動解鎖!
mysql> flush tables with read lock; //注意該參數(shù)設(shè)置后缅茉,如果自己同步對方數(shù)據(jù)嘴脾,同步前一定要記得先解鎖!