1. 程式人生 > >centos7.4 安裝 mysql 5.7

centos7.4 安裝 mysql 5.7

CentOS 7 版本將MySQL資料庫軟體從預設的程式列表中移除,用MariaDB代替了,MariaDB資料庫管理系統是MySQL的一個分支,主要由開源社群在維護,採用GPL授權許可。開發這個分支的原因之一是:甲骨文公司收購了MySQL後,有將MySQL閉源的潛在風險,因此社群採用分支的方式來避開這個風險。MariaDB的目的是完全相容MySQL,包括API和命令列,使之能輕鬆成為MySQL的代替品。

方法一:通過yum來進行mysql的安裝

由於我安裝的CentOS7.4預設安裝了MariaDB,所以我只需要啟動mariadb資料庫就可以正常使用mysql了

(安裝mariadb:yum install mariadb-server mariadb)

systemctl start mariadb

mariadb資料庫的相關命令是:
systemctl start mariadb #啟動MariaDB
systemctl stop mariadb #停止MariaDB
systemctl restart mariadb #重啟MariaDB
systemctl enable mariadb #設定開機啟動

安裝mariadb後顯示的也是 MariaDB [(none)]> ,可能看起來有點不習慣

接下來我們重新安裝MySQL

1、解除安裝mariadb

yum list installed | grep mariadb #檢查mariadb是否已安裝

yum -y remove mariadb* #全部解除安裝

2、下載並安裝mysql的YUM源

由於我們是下載到/home/lisonglin目錄下,所以先切換到該目錄下:cd /home/lisonglin

安裝mysql的YUM源:rpm -ivh mysql57-community-release-el7-11.noarch.rpm

檢查mysql的YUM源是否安裝成功:yum repolist enabled | grep “mysql.-community.

看到上圖所示表示安裝成功

選擇要啟用的mysql版本

檢視mysql版本,執行:yum repolist all | grep mysql

可以看到 5.5, 5.6,8.0 版本是預設禁用的

可以通過類似下面的語句來啟動或禁用某些版本

yum-config-manager –enable mysql57-community

yum-config-manager –disable mysql56-community

或者通過修改vim /etc/yum.repos.d/mysql-community.repo檔案,改變預設安裝的mysql版本。比如要安裝5.6版本,將5.7源的enabled=1改成enabled=0,然後再將5.6源的enabled=0改成enabled=1即可。

注意: 任何時候,只能啟用一個版本。

檢視當前的啟用的 MySQL 版本:yum repolist enabled | grep mysql

3、安裝MySQL

yum install mysql-community-server

安裝過程中一直輸入”y”就可以了,當出現下面的結果時,就代表mysql資料庫安裝成功了

4、測試

啟動mysql服務:systemctl status mysqld

登入進Mysql(剛安裝完時是沒有密碼的):mysql -uroot或mysql

可能用到的命令:

systemctl start mysqld #啟動mysqld

systemctl stop mysqld #停止mysqld

systemctl restart mysqld #重啟mysqld

systemctl enable mysqld #設定開機啟動

systemctl status mysqld #檢視 MySQL Server 狀態

5、mysql相關配置

設定密碼

mysqladmin -u root password ‘new-password’

或set password for ‘root’@’localhost’ = password(‘123456’);

設定完密碼之後就可以使用mysql -u root -p 命令來登入我們的mysql資料庫了

防火牆設定

遠端訪問 MySQL, 需開放預設埠號 3306.

firewall-cmd –permanent –zone=public –add-port=3306/tcp
firewall-cmd –permanent –zone=public –add-port=3306/udp

執行firewall-cmd –reload使最新的防火牆設定規則生效

遠端訪問設定

建立一個普通使用者 sa ,密碼是123456
CREATE USER ‘sa’@’%’ IDENTIFIED BY ‘123456’;
給這個使用者授予 SELECT,INSERT,UPDATE,DELETE 的遠端訪問的許可權,這個賬號一般用於提供給實施的系統訪問
GRANT SELECT,INSERT,UPDATE,DELETE ON . TO ‘sa’@’%’;
建立一個管理員使用者 admin 賬號 ,密碼是 123456
CREATE USER ‘admin’@’%’ IDENTIFIED BY ‘123456’;
給這個使用者授予所有的遠端訪問的許可權。這個使用者主要用於管理整個資料庫、備份、還原等操作。
GRANT ALL PRIVILEGES ON . TO ‘admin’@’%’;

設定使用者 root 可以在任意 IP 下被訪問:
grant all privileges on . to [email protected]”%” identified by “新密碼”;
設定使用者 root 可以在本地被訪問:
grant all privileges on . to [email protected]”localhost” identified by “新密碼”;

使授權立刻生效
flush privileges;

設定字符集

一般的,為了支援中文,我們應該將字符集設為 UTF-8, 執行SHOW VARIABLES LIKE ‘character%’;

檢視當前 MySQL 字符集

可以看到預設伺服器的字元器是 latin1 ,對中文不友好。修改 /etc/my.cnf 檔案,新增字符集的設定

[mysqld]

character_set_server = utf8

[mysql]

default-character-set = utf8

重啟 MySQL ,可以看到字符集已經修改了

其他常用配置:

[plain] view plain copy
[mysqld]
basedir = path # 使用給定目錄作為根目錄(安裝目錄)。
datadir = path # 從給定目錄讀取資料庫檔案。
pid-file = filename # 為mysqld程式指定一個存放程序ID的檔案(僅適用於UNIX/Linux系統);

socket = /tmp/mysql.sock # 為MySQL客戶程式與伺服器之間的本地通訊指定一個套接字檔案(Linux下預設是/var/lib/mysql/mysql.sock檔案)
port = 3306 # 指定MsSQL偵聽的埠
key_buffer = 384M # key_buffer是用於索引塊的緩衝區大小,增加它可得到更好處理的索引(對所有讀和多重寫)。
索引塊是緩衝的並且被所有的執行緒共享,key_buffer的大小視記憶體大小而定。
table_cache = 512 # 為所有執行緒開啟表的數量。增加該值能增加mysqld要求的檔案描述符的數量。可以避免頻繁的開啟資料表產生的開銷
sort_buffer_size = 2M # 每個需要進行排序的執行緒分配該大小的一個緩衝區。增加這值加速ORDER BY或GROUP BY操作。
注意:該引數對應的分配記憶體是每連線獨佔!如果有100個連線,那麼實際分配的總共排序緩衝區大小為100×6=600MB
read_buffer_size = 2M # 讀查詢操作所能使用的緩衝區大小。和sort_buffer_size一樣,該引數對應的分配記憶體也是每連線獨享。
query_cache_size = 32M # 指定MySQL查詢結果緩衝區的大小
read_rnd_buffer_size = 8M # 改引數在使用行指標排序之後,隨機讀用的。
myisam_sort_buffer_size =64M # MyISAM表發生變化時重新排序所需的緩衝
thread_concurrency = 8 # 最大併發執行緒數,取值為伺服器邏輯CPU數量×2,如果CPU支援H.T超執行緒,再×2
thread_cache = 8 # #快取可重用的執行緒數
skip-locking # 避免MySQL的外部鎖定,減少出錯機率增強穩定性。
[mysqldump]
max_allowed_packet =16M # 伺服器和客戶端之間最大能傳送的可能資訊包

[myisamchk]
key_buffer = 256M
sort_buffer = 256M
read_buffer = 2M
write_buffer = 2M
其他可選引數:
back_log = 384
指定MySQL可能的連線數量。 當MySQL主執行緒在很短時間內接收到非常多的連線請求,該引數生效,主執行緒花費很短時間檢查連線並且啟動一個新執行緒。 back_log引數的值指出在MySQL暫時停止響應新請求之前的短時間內多少個請求可以被存在堆疊中。 如果系統在一個短時間內有很多連線,則需要增大該引數的值,該引數值指定到來的TCP/IP連線的偵聽佇列的大小。 試圖設定back_log高於你的作業系統的限制將是無效的。預設值為50。對於Linux系統推薦設定為小於512的整數。

max_connections = n
MySQL伺服器同時處理的資料庫連線的最大數量(預設設定是100)。超過限制後會報 Too many connections 錯誤

key_buffer_size = n
用來存放索引區塊的RMA值(預設設定是8M),增加它可得到更好處理的索引(對所有讀和多重寫)

record_buffer:
這裡寫程式碼片 每個進行一個順序掃描的執行緒為其掃描的每張表分配這個大小的一個緩衝區。 如果你做很多順序掃描,你可能想要增加該值。預設數值是131072(128K)

wait_timeout:
伺服器在關閉它之前在一個連線上等待行動的秒數。

interactive_timeout:
伺服器在關閉它前在一個互動連線上等待行動的秒數。 一個互動的客戶被定義為對 mysql_real_connect()使用 CLIENT_INTERACTIVE 選項的客戶。 預設數值是28800,可以把它改為3600。

skip-name-resolve
禁止MySQL對外部連線進行DNS解析,使用這一選項可以消除MySQL進行DNS解析的時間。 但需要注意,如果開啟該選項,則所有遠端主機連線授權都要使用IP地址方式,否則MySQL將無法正常處理連線請求!

log-slow-queries = slow.log
記錄慢查詢,然後對慢查詢一一優化

skip-innodb
skip-bdb
關閉不需要的表型別,如果你需要,就不要加上這個

備份、還原
方法1:命令列
備份
mysqldump –socket=/var/lib/mysql/mysql.sock –single-transaction=TRUE -u root -p mysql> Solin.sql
還原
mysql –socket=/var/lib/mysql/mysql.sock -u root -p mysql< Solin.sql

參考: