轉載:https://blog.csdn.net/bianchengxiaoma/article/details/80800622 ,保存以便方便查找
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源
下載mysql的YUM源:wget -P /home/lisonglin http://dev.mysql.com/get/mysql57-community-release-el7-11.noarch.rpm(wget命令:http://man.linuxde.net/wget)
由於我們是下載到/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 start mysqld
登錄進Mysql(我的剛安裝完時沒有密碼):mysql -uroot或mysql
如果出現錯誤:ERROR 1045 (28000): Access denied for user 'root'@'localhost' (using password: NO)
則說明mysql安裝完後給root用戶生成了一個默認密碼,所以你需要使用密碼登錄。
mysql -uroot -p 回車 然後輸入默認密碼即可登錄myql。
關於如何查看默認密碼,可以參考:CentOS7.4中安裝了Mysql5.7之後如何查看默認密碼
可能用到的命令:
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 root@"%" identified by "新密碼";
設置用戶 root 可以在本地被訪問:
grant all privileges on *.* to root@"localhost" identified by "新密碼";
使授權立刻生效
flush privileges;
設置字符集
一般的,爲了支持中文,我們應該將字符集設爲 UTF-8, 執行SHOW VARIABLES LIKE 'character%';
查看當前 MySQL 字符集
可以看到默認服務器的字符器是 latin1 ,對中文不友好。修改 /etc/my.cnf 文件,添加字符集的設置
[mysql]
default-character-set = utf8
[mysqld]
character_set_server = 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
參考:
https://www.cnblogs.com/xiaoluo501395377/archive/2013/04/07/3003278.html
https://www.cnblogs.com/TeiSi/p/6560282.html
http://blog.csdn.net/whatlookingfor/article/details/52382472
http://www.linuxidc.com/Linux/2016-06/132676.htm