MySQL基礎:安裝

概述

數據庫(Database)是按照數據結構來組織、存儲和管理數據的倉庫,它產生於距今六十多年前,隨着信息技術和市場的發展,特別是二十世紀九十年代之後,數據管理再也不僅僅是存儲和管理數據,而轉變成用戶所須要的各類數據管理的方式。數據庫有不少種類型,從最簡單的存儲有各類數據的表格到可以進行海量數據存儲的大型數據庫系統都在各個方面獲得了普遍的應用。
主流的數據庫有:sqlserver,mysql,Oracle、SQLite、Access、MS SQL Server等。mysql

MySQL是一個關係型數據庫管理系統,由瑞典MySQL AB 公司開發,目前屬於 Oracle 旗下產品。MySQL 是最流行的關係型數據庫管理系統之一,在 WEB 應用方面,MySQL是最好的 RDBMS (Relational Database Management System,關係數據庫管理系統) 應用軟件。linux

MySQL主流分支

MySQL主流分支有Oracle官方版本的==MySQL、Percona Server、MariaDB==。sql

Oracle官方版本

官網地址:https://www.mysql.com/
分爲如下版本數據庫

  • MySQL Community Server 社區版本,開源免費,但不提供官方技術支持。
  • MySQL Enterprise Edition 企業版本,需付費,能夠試用30天。
  • MySQL Cluster 集羣版,開源免費。可將幾個MySQL Server封裝成一個Server。
  • MySQL Cluster CGE 高級集羣版,需付費。
  • MySQL Workbench(GUI TOOL)一款專爲MySQL設計的ER/數據庫建模工具。它是著名的數據庫設計工具DBDesigner4的繼任者。MySQL Workbench又分爲兩個版本,分別是社區版(MySQL Workbench OSS)、商用版(MySQL Workbench SE)。

MySQL Community Server 是開源免費的,這也是咱們一般用的MySQL的版本。
主要爲社區版(Community Servert)和商業版(ENterprise Edition),這兩個版本又分爲4個版本發佈,分別是Alpha(開發公司內部測試,穩定性差)、Beta(BUG較少,提供用戶測試)、RC(正式版發佈以前的版本)和GA(正式版,生產環境基本用這個版本)。
商業版比社區版更穩定,且不遵照GPL協議,能夠享受7*24小時技術支持和打補丁等服務。緩存

產品線 說明
5.0.xx到5.1.xx 早期產品,只修復漏洞,不增長新功能。5.1及之前默認引擎是MyISAM。
5.4.xx到5.7.xx 主流版本,經常使用5.5和5.6。5.5.5及之後默認引擎是Innodb。
6.0.xx到7.1.xx 集羣版本。
8.0.xx 新發布版本。

MySQL命名規則,例如5.5.40:安全

  • 第1個數字爲主版本號;
  • 第2個數字爲發行級別;
  • 第3個數字爲該發行系列的版本號。

Percona Server

官網地址:https://www.percona.com/software/mysql-database/percona-server服務器

Percona Server是MySQL重要的分支之一,它基於InnoDB存儲引擎的基礎上,提高了性能和易管理性。數據結構

MariaDB

官網地址:https://mariadb.org/
MariaDB是由MySQL創始人Monty建立的,是一款高度兼容的MySQL產品,主要由開源社區維護,採用GPL受權許可。oracle

安裝

環境

# 系統爲CentOS7.6版本。
[root@test ~]#cat /etc/redhat-release 
CentOS Linux release 7.6.1810 (Core)

關閉SElinux和防火牆socket

systemctl stop firewalld
systemctl disable firewalld
sed -i 's#^SELINUX=.*#SELINUX=disabled#g' /etc/sysconfig/selinux 
setenforce 0

修改最大打開進程數和文件句柄數

# 查看當前服務器最大打開進程數和文件句柄數
[root@test ~]#ulimit -a|egrep 'open files|max user'
open files                      (-n) 1024
max user processes              (-u) 7191

若是open files設置不合理,而當前服務器的鏈接過多或者表過多時,就有可能會出現打不開表或者訪問不了表的現象,默認狀況下,最大句柄數爲1024個,表示單進程最多能夠訪問1024個文件句柄。若是超過默認值,則會出現文件句柄超限的錯誤「too many open files」。

max user processes參數的用途是,有時候咱們可能會跑多實例,可是發現建立不了新的鏈接,報出「resource temporarily unavailable」的錯誤,表示沒有足夠的資源。

# 修改/etc/systemd/system.conf文件中的相關參數,與CentOS6修改的方式略有不一樣
sed -i '/^#DefaultLimitNOFILE=/aDefaultLimitNOFILE=65535' /etc/systemd/system.conf 
sed -i '/^#DefaultLimitNPROC=/aDefaultLimitNPROC=65535' /etc/systemd/system.conf 
sed -i 's#nproc     4096#nproc     65535#' /etc/security/limits.d/20-nproc.conf
# 須要重啓才能生效
reboot

安裝5.6版本

本次5.6版本使用二進制方式安裝,固然也能夠yum安裝。

# 建立用戶
useradd -s /sbin/nologin -M mysql

# basedir放在/usr/local目錄下
cd /usr/local

# 解壓二進制包
tar zxvf mysql-5.6.40-linux-glibc2.12-x86_64.tar.gz

# 作個軟連接,方便往後升級
ln -s mysql-5.6.40-linux-glibc2.12-x86_64 mysql
chown -R mysql.mysql mysql

# 建立數據目錄
mkdir -p /data/mysql
chown mysql.mysql -R /data/mysql

修改my.cnf配置

在啓動MySQL實例的過程當中,會按照/etc/my.cnf-->/etc/mysql/my.cnf-->/usr/local/mysql/my.cnf-->~/.my.cnf這樣的一個優先級別的順序去讀取參數文件。若是想指定默認的參數文件,須要配合--defaults-file參數。

通用配置參考:

[client]  
port = 3306 
socket = /tmp/mysql.sock  
default-character-set=utf8
[mysql]
default-character-set=utf8
[mysqld]  
character-set-server=utf8
port = 3306 
socket = /tmp/mysql.sock  
basedir = /usr/local/mysql/  
datadir = /data/mysql/  
default-storage-engine=INNODB
max_connections=200

初始化

cd /usr/local/mysql/scripts/
# 開始初始化,若出現兩個OK,則說明初始化成功
./mysql_install_db --basedir=/usr/local/mysql --datadir=/data/mysql --defaults-file=/etc/my.cnf --user=mysql

# 若出現如下錯誤:
FATAL ERROR: please install the following Perl modules before executing ./mysql_install_db:
Data::Dumper
# 解決方法
yum -y install autoconf

啓動

# 複製啓動腳本到/etc/rc.d/init.d目錄下
cp ../support-files/mysql.server /etc/rc.d/init.d/mysqld
chmod +x /etc/rc.d/init.d/mysqld
# 加入系統服務
chkconfig --add mysqld
# 將mysql相關命令連接到/bin目錄下
ln -s /usr/local/mysql/bin/* /bin/
# 啓動mysql
service mysqld start

安全加固

# 刪除test庫和無用帳號
mysql -uroot -e"delete from mysql.user where host='::1';"
mysql -uroot -e"delete from mysql.user where user='';"
mysql -uroot -e"delete from mysql.user where host='';"
mysql -uroot -e"drop database test;"

建立密碼

mysqladmin -uroot password

安裝5.7版本

5.7版本使用yum安裝。

添加源

建立文件/etc/yum.repos.d/mysql57.repo:

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

更新緩存:

yum makecache fast

yum安裝

yum -y install mysql mysql-server

啓動

systemctl start mysqld

修改密碼

注意:MySQL5.7默認安裝了密碼安全檢查插件(validate_password),默認密碼檢查策略要求密碼必須包含:大小寫字母、數字和特殊符號,而且長度不能少於8位。不然會提示ERROR 1819

[root@test ~]# grep "temporary" /var/log/mysqld.log
2018-10-23T02:19:47.328365Z 1 [Note] A temporary password is generated for root@localhost: jr8phgkQT1-4
2018-10-23T02:19:50.816992Z 0 [Note] InnoDB: Creating shared tablespace for temporary tables
[root@test ~]# mysql -uroot -p
Enter password:
Welcome to the MySQL monitor.  Commands end with ; or \g.
Your MySQL connection id is 324
Server version: 5.7.24
 
Copyright (c) 2000, 2018, Oracle and/or its affiliates. All rights reserved.
 
Oracle is a registered trademark of Oracle Corporation and/or its
affiliates. Other names may be trademarks of their respective
owners.
 
Type 'help;' or '\h' for help. Type '\c' to clear the current input statement.
 
 
mysql> set global validate_password_policy=0;
Query OK, 0 rows affected (0.00 sec)
 
mysql> set global validate_password_length=6;
Query OK, 0 rows affected (0.00 sec)
 
mysql> set password for 'root'@'localhost'=password('DtDream01');
Query OK, 0 rows affected, 1 warning (0.00 sec)

配置

修改/etc/my.cnf:

[client]
port = 3306
socket = /tmp/mysql.sock
default-character-set=utf8

[mysql]
default-character-set=utf8

[mysqld]
#skip-grant-tables
character-set-server=utf8
port = 3306
socket = /tmp/mysql.sock
datadir = /data/mysql/
default-storage-engine=INNODB
max_connections=200
# 關閉密碼過時功能
default_password_lifetime=0
# 關閉密碼檢測
validate_password=off
# 不區分大小寫
lower_case_table_names=1
相關文章
相關標籤/搜索