centos7安裝mysql

centos7安裝mysql(yum)

安裝環境

  • centos7
  • MySQL 5.6.24

依賴安裝

mysql依賴libaio,所以先要安裝libaio

yum search libaio #檢索相關信息
yum install libaio # 安裝依賴包

成功安裝,提示如下:

[root@bogon /]# yum install libaio
已加載插件:fastestmirror
Loading mirror speeds from cached hostfile
 * base: mirrors.yun-idc.com
 * extras: mirrors.163.com
 * updates: mirrors.163.com
軟件包 libaio-0.3.109-12.el7.x86_64 已安裝並且是最新版本
無須任何處理

檢查mysql是否已安裝

yum list installed | grep mysql
如果已經安裝,就先全部卸載,命令如下:
yum -y remove mysql-libs.x86_64
若有多個依賴文件則依次卸載。當結果顯示爲 Complete!即卸載完畢。

安裝

添加mysql yum respository

添加 MySQL Yum Repository 到你的系統 repository 列表中,執行
wget http://repo.mysql.com/mysql-community-release-el7-5.noarch.rpm
yum localinstall mysql-community-release-el7-5.noarch.rpm
顯示

[root@bogon software]# yum localinstall mysql-community-release-el7-5.noarch.rpm
已加載插件:fastestmirror
正在檢查 mysql-community-release-el7-5.noarch.rpm: mysql-community-release-el7-5.noarch
mysql-community-release-el7-5.noarch.rpm 將被安裝
正在解決依賴關係
--> 正在檢查事務
---> 軟件包 mysql-community-release.noarch.0.el7-5 將被 安裝
--> 解決依賴關係完成
......

已安裝:
  mysql-community-release.noarch 0:el7-5

完畢!

提示“完成!”,則說明 源添加成功。

驗證是否添加成功

yum repolist enabled | grep "mysql.*-community.*"
可以看到下面內容:

[root@bogon software]# yum repolist enabled | grep "mysql.*-community.*"
mysql-connectors-community/x86_64        MySQL Connectors Community           1
mysql-tools-community/x86_64             MySQL Tools Community                1
mysql56-community/x86_64                 MySQL 5.6 Community Server          13

選擇要啓用的mysql版本

查看mysql版本,執行
yum repolist all | grep mysql
可以看到 5.5, 5.7 版本是默認禁用的,因爲現在最新的穩定版是 5.6

[root@bogon software]# yum repolist all | grep mysql
mysql-connectors-community/x86_64 MySQL Connectors Community         啓用:    14
mysql-connectors-community-source MySQL Connectors Community - Sourc 禁用
mysql-tools-community/x86_64      MySQL Tools Community              啓用:    17
mysql-tools-community-source      MySQL Tools Community - Source     禁用
mysql55-community/x86_64          MySQL 5.5 Community Server         禁用
mysql55-community-source          MySQL 5.5 Community Server - Sourc 禁用
mysql56-community/x86_64          MySQL 5.6 Community Server         啓用:   139
mysql56-community-source          MySQL 5.6 Community Server - Sourc 禁用
mysql57-community-dmr/x86_64      MySQL 5.7 Community Server Develop 禁用
mysql57-community-dmr-source      MySQL 5.7 Community Server Develop 禁用

可以通過類似下面的語句來啓動某些版本

yum-config-manager --disable mysql56-community

yum-config-manager --enable mysql57-community-dmr

或者通過修改 /etc/yum.repos.d/mysql-community.repo 文件

# Enable to use MySQL 5.6
[mysql56-community]
name=MySQL 5.6 Community Server
baseurl=http://repo.mysql.com/yum/mysql-5.6-community/el/7/$basearch/
enabled=1
gpgcheck=1
gpgkey=file:/etc/pki/rpm-gpg/RPM-GPG-KEY-mysql

其中 enabled=0 是指禁用,enabled=1 指啓用。

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

執行
yum repolist enabled | grep mysql
查看當前的啓動的 MySQL 版本

[root@bogon software]# yum repolist enabled | grep mysql
mysql-connectors-community/x86_64        MySQL Connectors Community           14
mysql-tools-community/x86_64             MySQL Tools Community                17
mysql56-community/x86_64                 MySQL 5.6 Community Server          139

通過Yum安裝mysql

執行命令
yum install mysql-community-server
Yum 會自動處理 MySQL 與其他組件的依賴關係:

[root@bogon software]#  yum install mysql-community-server
已加載插件:fastestmirror
Loading mirror speeds from cached hostfile
 * base: mirrors.yun-idc.com
 * extras: mirrors.163.com
 * updates: mirrors.163.com
正在解決依賴關係
--> 正在檢查事務
---> 軟件包 mysql-community-server.x86_64.0.5.6.24-3.el7 將被 安裝
......
......

中途遇到提示,按照提示安裝
執行
rpm -qi mysql-community-server.x86_64 0:5.6.24-3.el7

執行
whereis mysql
可以看到mysql的安裝目錄是/usr/bin

[root@localhost ~]# whereis mysql
mysql: /usr/bin/mysql /usr/lib64/mysql /usr/share/mysql /usr/share/man/man1/mysql.1.gz

啓動和關閉 MySQL Server

啓動 MySQL Server

systemctl start mysqld

查看 MySQL Server 狀態

systemctl status mysqld

關閉 MySQL Server

systemctl stop mysqld

測試是否安裝成功

mysql
可以進入mysql命令行界面

防火牆設置

遠程訪問 MySQL, 需開放默認端口號 3306.

方式1:iptables(CentOS 7.x版本之前用法,不推薦)

打開 iptables 的配置文件:
vi /etc/sysconfig/iptables
如果該 iptables 配置文件 不存在,先執行 yum install iptables-services 安裝

添加

-A RH-Firewall-1-INPUT -m state –state NEW -m tcp -p tcp –dport 3306 -j ACCEPT
-A RH-Firewall-1-INPUT -m state –state NEW -m udp -p udp –dport 3306 -j ACCEPT

執行iptables重啓生效

service iptables restart

方式2:firewall-cmd(推薦)

執行

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

這樣就開放了相應的端口。
執行
firewall-cmd --reload
使最新的防火牆設置規則生效。

mysql安全設置

服務器啓動後,可以執行

mysql_secure_installation;

根據提示進行選擇。

至此,整個 MySQL 安裝完成。

遠程訪問設置

創建一個普通用戶 sa ,密碼是 some_pass
CREATE USER 'sa'@'%' IDENTIFIED BY 'some_pass';
給這個用戶授予 SELECT,INSERT,UPDATE,DELETE 的遠程訪問的權限,這個賬號一般用於提供給實施的系統訪問
GRANT SELECT,INSERT,UPDATE,DELETE ON *.* TO 'sa'@'%';
創建一個管理員用戶 admin 賬號 ,密碼是 some_pass
CREATE USER 'admin'@'%' IDENTIFIED BY 'some_pass';
給這個用戶授予所有的遠程訪問的權限。這個用戶主要用於管理整個數據庫、備份、還原等操作。
GRANT ALL ON *.* TO 'admin'@'%';
使授權立刻生效
flush privileges;

更改數據存放目錄

創建數據存放目錄

home 目錄下建立 data 目錄
mkdir /home/data

把 MySQL 服務進程停掉

如果 MySQL 是啓動的,要先關閉
mysqladmin -u root -p shutdown

移動數據到數據存放目錄

/var/lib/mysql 整個目錄移到 /home/data,執行
mv /var/lib/mysql /home/data
這樣就把 MySQL 的數據文件移動到了 /home/data/mysql 下
修改 /etc/my.cnf 文件,

[mysqld]
datadir=/home/data/mysql
socket=/home/data/mysql/mysql.sock

[mysql]
socket=/home/data/mysql/mysql.sock

修改權限
chown -R mysql:mysql /home/data/mysql
重啓後,如果不能啓動 MySQL 服務,執行
vi /etc/sysconfig/selinux
調整
SELINUX=permissive
保存設置,執行 reboot 重啓生效

開機自起

查看 MySQL 服務是否開機啓動

[root@localhost ~]# systemctl is-enabled mysql.service;echo $?
enabled
0

如果是 enabled 則說明是開機自動,如果不是,執行
chkconfig --levels 235 mysqld on

設置字符集

一般的,爲了支持中文,我們應該講字符集設爲 UTF-8, 執行
SHOW VARIABLES LIKE 'character%';
查看當前 MySQL 字符集

mysql>  SHOW VARIABLES LIKE 'character%';
+--------------------------+----------------------------+
| Variable_name            | Value                      |
+--------------------------+----------------------------+
| character_set_client     | utf8                       |
| character_set_connection | utf8                       |
| character_set_database   | latin1                     |
| character_set_filesystem | binary                     |
| character_set_results    | utf8                       |
| character_set_server     | latin1                     |
| character_set_system     | utf8                       |
| character_sets_dir       | /usr/share/mysql/charsets/ |
+--------------------------+----------------------------+
8 rows in set (0.00 sec)

可以看到默認服務器的字符器是 latin1 ,對中文不友好。
修改 /etc/my.cnf 文件,添加字符集的設置

[mysqld]
character_set_server = utf8

[mysql]
default-character-set = utf8

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

其他常用配置配置

調整 MySQL 運行參數,修改 /etc/my.cnf 文件,常用配置如下:

[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=/home/data/mysql/mysql.sock --single-transaction=TRUE -u root -p emsc > emsc.sql
還原
mysql --socket=/home/data/mysql/mysql.sock -u root -p emsc < emsc.sql

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章