一:MySQL基本介紹及安裝


一:MySQL基本介紹

1 MySQL安裝包版本選擇,潛規則

MySQL5.6:GA 6-12個月 小版本是偶數版,奇數版一般都是測試。

MySQL5.7:GA 6-12個月 小版本是偶數版,選擇5.7.17以上版本 ,自帶高可用(MGR)

2 什么是數據?

數據(data)是事實或觀察的結果,是對客觀事物的邏輯歸納,是用於表示客觀事物的未經加工的的原始素材。 數據可以是連續的值,比如聲音、圖像,稱為模擬數據。也可以是離散的,如符號、文字,稱為數字數據。 在計算機系統中,數據以二進制信息單元0,1的形式表示。

3 為什么不使用word、excel做數據庫

1.數據庫可以設置索引,性能高

2.安全性能高

3.不會出現數據一致性問題

4.沒法做集群

4 數據管理系統

DBMS(database management system)

1.存儲數據

2.管理數據

5 數據管理系統分類

(1)關系型數據庫(RDBMS)

典型產品:MySQL、Oracle、MariaDB、MSSQL

1)二維表

2)典型產品Oracle傳統企業,MySQL互聯網企業

3)通過SQL查詢數據(結構化查詢語言)

4)最大特點數據安全性方面強(ACID)

(2) 非關系型數據庫(NoSQL)

典型產品:Redis、memcache、MongoDB、elasticsearch(search engine)

1)key:value存儲方式

2)不是否定關系型數據庫,而是做關系型數據庫的補充。

3)想做老大,先學會做老二。

性能功能對比

二:MySQL安裝

1 mysql編譯安裝

### 0.安裝依賴

[root@db01 ~]# yum install -y cmake gcc gcc-c++ glibc ncurses-devel autoconf libaio-devel

### 1.解壓

[root@db01 ~]# tar xf mysql-5.6.44.tar.gz
[root@db01 ~]# ll mysql-5.6.44
total 252
drwxr-xr-x  2 7161 31415  4096 Mar 15  2019 BUILD
drwxr-xr-x  2 7161 31415  4096 Mar 15  2019 client
drwxr-xr-x  4 7161 31415  4096 Mar 15  2019 cmake
-rw-r--r--  1 7161 31415 23415 Mar 15  2019 CMakeLists.txt
drwxr-xr-x  3 7161 31415    21 Mar 15  2019 cmd-line-utils
-rw-r--r--  1 7161 31415 19838 Mar 15  2019 config.h.cmake
-rw-r--r--  1 7161 31415 40929 Mar 15  2019 configure.cmake
-rw-r--r--  1 7161 31415 17987 Mar 15  2019 COPYING
drwxr-xr-x  2 7161 31415   312 Mar 15  2019 dbug
drwxr-xr-x  2 7161 31415    80 Mar 15  2019 Docs
-rw-r--r--  1 7161 31415 65958 Mar 15  2019 Doxyfile-perfschema
drwxr-xr-x  4 7161 31415   229 Mar 15  2019 extra
drwxr-xr-x  4 7161 31415  4096 Mar 15  2019 include
-rw-r--r--  1 7161 31415   333 Mar 15  2019 INSTALL
drwxr-xr-x  3 7161 31415   224 Mar 15  2019 libmysql
drwxr-xr-x  3 7161 31415   204 Mar 15  2019 libmysqld
drwxr-xr-x  2 7161 31415   221 Mar 15  2019 libservices
drwxr-xr-x  2 7161 31415  4096 Mar 15  2019 man
drwxr-xr-x 10 7161 31415   305 Mar 15  2019 mysql-test
drwxr-xr-x  2 7161 31415  4096 Mar 15  2019 mysys
drwxr-xr-x  2 7161 31415   300 Mar 15  2019 mysys_ssl
drwxr-xr-x  9 7161 31415   113 Mar 15  2019 packaging
drwxr-xr-x 11 7161 31415   187 Mar 15  2019 plugin
-rw-r--r--  1 7161 31415  2496 Mar 15  2019 README
drwxr-xr-x  2 7161 31415  4096 Mar 15  2019 regex
drwxr-xr-x  2 7161 31415  4096 Mar 15  2019 scripts
drwxr-xr-x  2 7161 31415     6 Mar 15  2019 source_downloads
drwxr-xr-x  4 7161 31415 12288 Mar 15  2019 sql
drwxr-xr-x  5 7161 31415  4096 Mar 15  2019 sql-bench
drwxr-xr-x  2 7161 31415   155 Mar 15  2019 sql-common
drwxr-xr-x 13 7161 31415   169 Mar 15  2019 storage
drwxr-xr-x  2 7161 31415  4096 Mar 15  2019 strings
drwxr-xr-x  5 7161 31415  4096 Mar 15  2019 support-files
drwxr-xr-x  2 7161 31415  4096 Mar 15  2019 tests
drwxr-xr-x  5 7161 31415    70 Mar 15  2019 unittest
-rw-r--r--  1 7161 31415    88 Mar 15  2019 VERSION
drwxr-xr-x  3 7161 31415   298 Mar 15  2019 vio
drwxr-xr-x  2 7161 31415    32 Mar 15  2019 win
drwxr-xr-x 11 7161 31415  4096 Mar 15  2019 zlib

# 2.生成 ./configure --prefix=/usr/local/nginx  cmake 或者是 gmake

## 創建安裝目錄

[root@db01 ~]# mkdir /application
cmake . -DCMAKE_INSTALL_PREFIX=/application/mysql-5.6.44 \        #安裝目錄
-DMYSQL_DATADIR=/application/mysql-5.6.44/data \                  #數據目錄
-DMYSQL_UNIX_ADDR=/application/mysql-5.6.44/tmp/mysql.sock \      #socket文件目錄
-DDEFAULT_CHARSET=utf8 \      #字符集
-DDEFAULT_COLLATION=utf8_general_ci \         #校驗規則
-DWITH_EXTRA_CHARSETS=all \    #額外字符集
-DWITH_INNOBASE_STORAGE_ENGINE=1 \         #支持的存儲引擎
-DWITH_FEDERATED_STORAGE_ENGINE=1 \
-DWITH_BLACKHOLE_STORAGE_ENGINE=1 \
-DWITHOUT_EXAMPLE_STORAGE_ENGINE=1 \
-DWITH_ZLIB=bundled \         #啟動zlib庫(壓縮)
-DWITH_SSL=bundled \          #啟用ssl加密
-DENABLED_LOCAL_INFILE=1 \    #啟用本地導入數據支持
-DWITH_EMBEDDED_SERVER=1 \
-DENABLE_DOWNLOADS=1 \       
-DWITH_DEBUG=0        #禁用debug(一般開發會用,運維用不到)

# 3.編譯

make

# 4.安裝

make install

[root@db01 mysql-5.6.44]# ll /application/mysql-5.6.44/
total 44
drwxr-xr-x  2 root root  4096 Nov 30 16:12 bin
-rw-r--r--  1 root root 17987 Mar 15  2019 COPYING
drwxr-xr-x  3 root root    18 Nov 30 16:12 data
drwxr-xr-x  2 root root    55 Nov 30 16:12 docs
drwxr-xr-x  3 root root  4096 Nov 30 16:12 include
drwxr-xr-x  3 root root   291 Nov 30 16:12 lib
drwxr-xr-x  4 root root    30 Nov 30 16:12 man
drwxr-xr-x 10 root root  4096 Nov 30 16:12 mysql-test
-rw-r--r--  1 root root  2496 Mar 15  2019 README
drwxr-xr-x  2 root root    30 Nov 30 16:12 scripts
drwxr-xr-x 28 root root  4096 Nov 30 16:12 share
drwxr-xr-x  4 root root  4096 Nov 30 16:12 sql-bench
drwxr-xr-x  2 root root   136 Nov 30 16:12 support-files

# 5.做軟鏈接

[root@db01 scripts]# ln -s /application/mysql-5.6.44 /application/mysql

# 6.拷貝配置文件

[root@db01 mysql-5.6.44]# cd /application/mysql-5.6.44/support-files/
[root@db01 support-files]# cp my-default.cnf /etc/my.cnf
cp: overwrite ‘/etc/my.cnf’? y

# 7.拷貝啟動腳本,延用Centos6的啟動方式

[root@db01 support-files]# cp mysql.server /etc/init.d/mysqld

# 8.創建mysql用戶

[root@db01 scripts]# useradd mysql -s /sbin/nologin -M

# 9.初始化

[root@db01 scripts]# ./mysql_install_db --user=mysql --basedir=/application/mysql --datadir=/application/mysql/data
--user:		#指定用戶
--basedir:  #指定程序所在目錄
--datadir:  #指定數據目錄

# 10.創建socket存放目錄

[root@db01 scripts]# mkdir /application/mysql-5.6.44/tmp

# 11.授權MySQL權限

[root@db01 scripts]# chown -R mysql.mysql /application/mysql*

# 12.啟動MySQL

[root@db01 scripts]# /etc/init.d/mysqld start

# 13.添加環境變量

#因為編譯安裝的mysql,啟動命令是:/application/mysql/bin/mysql,很不方便,所以加一個環境變量
[root@db01 scripts]# vim /etc/profile.d/mysql.sh
export PATH="/application/mysql/bin:$PATH"

# 14.加載環境變量

[root@db01 scripts]# source /etc/profile


mysql初始化報錯:

缺少perl模塊,安裝autoconf可以解決

解決方式: yum install -y autoconf

mysql啟動時報錯:

這邊注意下,以后報錯:without PID File ,很正常,因為找不到PID所以無法啟動,所以報錯。

這邊需要解決另一個報錯:/tmp目錄不存在

解決思路: 因為socket文件需要一個目錄,如果沒有這個目錄會報錯,所以需要創建tmp目錄 解決方式: mkdir /application/mysql-5.6.44/tmp

此時依舊報錯如下:

根據提示查看錯誤日志(直接看ERROR,不需要看NOTE)

報錯原因: socket文件沒有權限 解決思路: 因為編譯安裝的mysql啟動需要socket文件,所以必須要授權mysql用戶的權限 解決方式: chown -R mysql.mysql /application/mysql*

2 mysql二進制安裝

# 1.解壓

[root@db02 ~]# tar xf mysql-5.6.44-linux-glibc2.12-x86_64.tar.gz

# 2.創建程序目錄

[root@db02 ~]# mkdir /application

# 3.移動MySQL程序到安裝目錄

[root@db02 ~]# mv mysql-5.6.44-linux-glibc2.12-x86_64 /application/mysql-5.6.44

# 4. 做軟鏈接

[root@db02 ~]# ln -s /application/mysql-5.6.44 /application/mysql

# 5.拷貝配置文件

[root@db02 ~]# cd /application/mysql/support-files/
[root@db02 support-files]# cp my-default.cnf /etc/my.cnf
cp: overwrite ‘/etc/my.cnf’? y

# 6.拷貝啟動腳本

[root@db02 support-files]# cp mysql.server /etc/init.d/mysqld

# 7.創建用戶

[root@db02 scripts]# useradd mysql -s /sbin/nologin -M

# 8.初始化

[root@db02 scripts]# ./mysql_install_db --user=mysql --basedir=/application/mysql --datadir=/application/mysql/data

# 9.修改啟動腳本

[root@db02 scripts]# sed -i 's#/usr/local#/application#g' /etc/init.d/mysqld

# 10.啟動MySQL

[root@db02 scripts]# /etc/init.d/mysqld start

# 11.添加環境變量

[root@db02 scripts]# vim /etc/profile.d/mysql.sh
export PATH="/application/mysql/bin:$PATH"

# 12.加載環境變量

[root@db02 scripts]# source /etc/profile




三:使用systemd管理MySQL

#編輯MySQL腳本
[root@db01 ~]# vim /usr/lib/systemd/system/mysqld.service
[Unit]
Description=MySQL Server
Documentation=man:mysqld(8)
Documentation=https://dev.mysql.com/doc/refman/en/using-systemd.html
After=network.target
After=syslog.target
[Install]
WantedBy=multi-user.target
[Service]
User=mysql
Group=mysql
ExecStart=/application/mysql/bin/mysqld --defaults-file=/etc/my.cnf
LimitNOFILE = 5000

#啟動MySQL
[root@db01 ~]# systemctl start mysqld
#停止MySQL
[root@db01 ~]# systemctl stop mysqld
#重啟MySQL
[root@db01 ~]# systemctl restart mysqld

四:使用二進制管理MySQL

需要在配置文件添加:
basedir=/application/mysql
datadir=/application/mysql/data
為什么?
[root@db02 mysql]# grep -r 'usr/local' ./*     你會發現,二進制安裝mysql,所有的文件都會在/usr/local/mysql下
我們之前只用sed改了啟動腳本的目錄。所有這邊條件這兩行指定目錄


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM