linux下安裝MySQL
https://www.cnblogs.com/bookwed/p/5896619.html
https://www.cnblogs.com/duanrantao/p/8988116.html
https://www.cnblogs.com/bookwed/p/5896619.html
網頁資料
安裝環境
CentOS7 mysql-5.5.62-linux-glibc2.12-x86_64.tar
安裝前的準備
特别注意的是一個階段配置一個快照如果發現GG還可以回退
安裝虛拟機成功配置一下 安裝mysql配置一下等等。。總之你越是上心到後面你越輕松。
主從複制原理:
主從複制就是通過主的二進制日志檔案 通過io傳輸到從 然後進行資料同步中間涉及到事務的復原
sync_binlog=1: Mysql開啟bin-log日志使用bin-log時,預設情況下,并不是每次執行寫入就與硬碟同步,這樣在伺服器崩潰時,就可能導緻bin-log最後的語句丢失。可以通過這個參數來調節,sync_binlog=N,使執行N次寫入後,與硬碟同步。1是最安全的,但是也是最慢的。
如果用到innode 存儲引擎:
innodb_flush_logs_at_trx_commit=ON(刷寫日志:在事務送出時,要将記憶體中跟事務相關的資料立即刷寫到事務日志中去。)
innodb_support_xa=ON (分布式事務:基于它來做兩段式送出功能)
sync_master_info=1:每次給從節點dump一些事件資訊之後,主節點的master info 資訊會立即同步到磁盤上。讓從伺服器中的 master_info 及時更新。
總之就是主從之間通過二進制日志檔案進行資料傳輸
開始MySQL安裝 兩台虛拟機安裝效果都要能夠啟動
Mysql的搭建(不建議網上線上下載下傳安裝包)
1.解壓mysql安裝包到 /usr/local/mysql
tar
-zxvf mysql.................
複制到local底下的mysql目錄
cp
-r mysql-5.6.33-linux-glibc2.5-x86_64
/usr/local/mysql
2.
#添加使用者組
groupadd mysql
#添加使用者mysql 到使用者組mysql
useradd
-g mysql mysql
3.進入到mysql的安裝目錄
cd /usr/local/mysql
建立一個data檔案夾 用來存儲資料
mkdir
.
/data/mysql
4.修改資料庫權限 chown -R mysql:mysql ./
5.初始化資料庫
./scripts/mysql_install_db --user=mysql --datadir=/usr/local/mysql/data/mysql
6.添加啟動服務
cp support-files/mysql.server /etc/init.d/mysqld
7.修改啟動腳本
vi /etc/init.d/mysqld
8.修改一個啟動服務的位址 一個data的檔案路徑
service mysql restart 啟動mysql
9.進入到mysql目錄,執行添加MySQL配置的操作
cp support-files/my-medium.cnf /etc/my.cnf
或:
cp support-files/my-default.cnf /etc/my.cnf
10.配置環境變量
11.啟動 完成!
安裝教程網上多的很。。。。。
chown -R mysql:mysql mysql
給整個mysql目錄權限
這就完了????
肯定沒有
主要這裡說明一下安裝的坑 隻有走過千山綠水 才能萬古長存。。。。。。
下面是遇到的坑:
1.Can't connect to local MySQL server through socket '/tmp/mysql.sock'
不能連接配接mysql 這是遠端連接配接的坑 不是防火牆就是權限,密碼
2. ERROR! The server quit without updating PID file (/var/lib/mysql/master.pid).
常見的錯誤:https://www.cnblogs.com/wangshaojun/p/5065298.html
主要原因是配置檔案 。
3.error: log-error set to '/var/log/mariadb/mariadb.log', however file don't exists. Create writable for user 'mysql'.
這是mysql沒有日志檔案 需要建立一個日志檔案目錄和一個.log檔案
4.遠端連接配接報錯 錯誤碼1130 更改linux中mysql中的user表
加一個host為% 後面的 為root
https://blog.csdn.net/liubingger/article/details/80680266
原因:遠端連接配接需要你在user表中加一個誰都可以連接配接進來,誰都可以操作的權限。
- CentOS7的防火牆 他與其他版本的CentOS不一樣
CentOS7中需要使用firewalld來關閉防火牆
參考下面連結https://www.cnblogs.com/moxiaoan/p/5683743.html
- 發現啟動mysql用service MySQL start 啟動不了可以嘗試
在mysql安裝目錄下
./support-files/mysql.server start 啟動
後面加stop就是停止
7.如果進入mysql找不到發現找不到指令的情況
ln -s /usr/local/mysql/bin/mysql /usr/local/bin
因為系統預設會查找/usr/bin下的指令,由于mysql沒有在這個目錄下,是以出現not found。是以需要做一個軟連接配接到/usr/bin目錄下。
- 各種配置都配好了 網絡狀态也可以連接配接 發現還是遠端連接配接不上的
網上的各種傻逼四連:
一、檢查資料庫是否打開
二、測試能否ping通資料庫主機(另檢查資料庫是否可以遠端連接配接)
三、檢查資料庫主機防火牆是否屏蔽了3306端口
四、檢視一下資料庫的mysql庫中user表是否給予了授權
- Ifconfig 檢視本機ip 如果發現檢視不了了
ip addr 是CentOS7中新檢視ip的方法
- 啟動mysql的時候 提示你重定向的資訊
還是環境變量的問題 找不到指令的也是
- 如果安裝失敗 你想鏟掉重新再裝 ,你需要删除所有有關mysql的檔案
如果你隻删了mysql安裝目錄 抱歉 你再裝一次肯定GG!!!
原因:中間涉及到了有一些配置檔案 比如my.cnf的關聯檔案 影響的是你下次安裝失敗!
- 錯誤碼,錯誤提示會給你一個錯誤的碼 下面是我安裝遇到的 如果沒有你遇到的你也可以百度
1045 不是你使用者名錯就是密碼錯 嘗試用andmin
2003 mysql沒啟動!
10060 配置問題 user表 和mysql權限
42000 登陸的時候用了匿名使用者
在my.cnf 中配置 skip-grant-tables 可以跳過mysql的權限驗證
28000 就是密碼錯誤之類的 推薦跳過驗證
1201 錯誤 無法初始化主資訊結構
解決辦法:stop slave; 中間放更改語句 reset slave;
2013 重新開機試一下
- my.cnf檔案設定以下屬性可以跳過mysql的程式驗證,但是你靠這個去更改mysql的配置或者表結構,或者配置主從。他會提示你跳過驗證的不讓更改。
如果你驗證登陸會等到一個“”的賬号 你會發現你use mysql的庫都進不去
skip-grant-tables
解決方法:直接用用戶端連接配接,到mysql的user表中将其中一條user為root的記錄的host改成localhost,然後儲存就好了;
配置主從
配置主從的時候 網上資源一大把。主要分兩塊
Mysql5.5之前 和5.5之後 配置方法不一樣 一個是在配置檔案中更改 一個是進入mysql之後進行更改。具體的方法就多試幾次。看懂一些配置檔案搭建非常簡單。
個人建議參照多個搭建方法來對照起來
https://blog.51cto.com/13910274/2172910 一整套流程
https://blog.csdn.net/daicooper/article/details/79905660 最簡單的一個
https://www.jianshu.com/p/b0cf461451fb
主要介紹一下坑:
1.有時候發現你儲存檔案無法儲存的情況!
一般儲存檔案wq就可以直接儲存 有時候會讓你加wq!
這樣都儲存不了的用: w ! sudo tee % 強制儲存 不過多半不好使!
第二種方法 需要更改使用者權限
Su root 切換到root的時候 發現權限認證錯誤
你需要重新定義密碼: sudo passwd root
更改新的密碼之後就可以切換到root了
2.如果你的虛拟機關機或挂起狀态 網絡丢失!
設定裡面找不到網絡連接配接的方式 而且百度的時候需要你配置各種靜态ip
更改各種設定和配置!如果你之前沒有配置過這些東西!
個人建議:
- 你先把虛拟機關了!
如果重新開機之後還是這樣 回退快照吧。
如果你沒快照,恭喜GG! 鏟掉重裝!
2.回退到快照你會發現你的網絡狀态還是那樣! 你就進行下面操作
之後你會發現??
好了!
然後會更改你的ip位址 需要重新設定
3. Mysql安裝完成。全程連接配接可以連接配接上 但是mysql-uroot-p找不到指令
根本原因:沒有配置mysql的環境變量
可以在bin目錄下./mysql -uroot -p 來登陸
4.錯誤Ignoring query to other database
最傻逼的錯誤 自己百度。
5.Job for mysqld.service failed because the control process exited with error code. See "systemctl status mysqld.service" and "journalctl -xe" for details.
報這個錯,他的意思是你配置檔案瞎了眼睛亂**寫。報錯了
- 最大的一個坑
主裡面設定server_id = 1 從裡面設定server_id = 2
你就會發現怎麼配置好了還是啟動不了
檢視 報錯資訊 在data檔案夾下 找一個.err結尾的 日志檔案
檢視檔案得知 報錯資訊是server-id 從不能和主一樣。。。。。
你就會發現在my.cnf檔案中最角落一塊
檔案預設自帶了一個server-id的屬性 你要給删掉 不然一直
slave_IO_running : no
隻有兩個都是yes了才算配置成功了
最好的辦法就是:若失敗檢視mysql錯誤日志中具體報錯詳情來進行問題定位
然後測試,網上測試方法一大把
最簡單的測試你就通過可視化工具在主裡面建立一張表,然後到從庫裡瘋狂重新整理。3秒鐘不出來 你就可以開始砸電腦
遇到坑了就百度,遇到錯誤看日志。
--如果有有我沒講解到了你還不知道怎麼解決 可以評論出來 。