# MySQL數(shù)據(jù)庫多種安裝方式
數(shù)據(jù)庫官網(wǎng)下載地址??https://downloads.mysql.com/archives/community/
## 一 linux系統(tǒng)
### 1.1 源碼安裝數(shù)據(jù)庫(自定義安裝目錄)
![](https://blog.sholdboyedu.com/wp-content/uploads/2021/07/1-1.png)
#### 1)下載代碼包
```bash
[root@db01 ~]# wget https://downloads.mysql.com/archives/get/p/23/file/mysql-5.6.46.tar.gz
```
#### 2)安裝依賴
```bash
[root@db01 ~]# yum install -y ncurses-devel libaio-devel gcc gcc-c++ glibc cmake autoconf openssl openssl-devel
```
#### 3)解壓
```bash
[root@db01 ~]# tar xf mysql-5.6.46.tar.gz
```
#### 4)創(chuàng)建目錄
```bash
[root@db01 ~]# mkdir /service
```
#### 5)生成cmake
```bash
[root@db01 ~]# cd mysql-5.6.46/
[root@db01 ~]# cmake . -DCMAKE_INSTALL_PREFIX=/service/mysql-5.6.46 \
-DMYSQL_DATADIR=/service/mysql-5.6.46/data \
-DMYSQL_UNIX_ADDR=/service/mysql-5.6.46/tmp/mysql.sock \
-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 \
-DWITH_SSL=system \
-DENABLED_LOCAL_INFILE=1 \
-DWITH_EMBEDDED_SERVER=1 \
-DENABLE_DOWNLOADS=1 \
-DWITH_DEBUG=0
#程序存放位置
cmake . -DCMAKE_INSTALL_PREFIX=/service/mysql-5.6.46 \
#數(shù)據(jù)存放位置
-DMYSQL_DATADIR=/service/mysql-5.6.46/data \
#socket文件存放位置
-DMYSQL_UNIX_ADDR=/service/mysql-5.6.46/tmp/mysql.sock \
#使用utf8字符集
-DDEFAULT_CHARSET=utf8 \
#校驗規(guī)則
-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 \
#啟用zlib庫支持(zib期揪、gzib相關(guān))
-DWITH_ZLIB=bundled \
#啟用SSL庫支持(安全套接層)
-DWITH_SSL=bundled \
#啟用本地數(shù)據(jù)導(dǎo)入支持
-DENABLED_LOCAL_INFILE=1 \
#編譯嵌入式服務(wù)器支持
-DWITH_EMBEDDED_SERVER=1 \
# mysql5.6支持了google的c++mock框架了缤苫,允許下載谍婉,否則會安裝報錯唤蔗。
-DENABLE_DOWNLOADS=1 \
#禁用debug(默認(rèn)為禁用)
-DWITH_DEBUG=0
#編譯
```
#### 5)編譯 make
```bash
[root@db01 mysql-5.6.46]# make
```
#### 6)安裝 make install
```bash
[root@db01 mysql-5.6.46]# make install
```
#### 7)做軟連接
```bash
[root@db01 ~]# ln -s /service/mysql-5.6.46 /service/mysql
```
#### 8)創(chuàng)建數(shù)據(jù)庫用戶
```bash
[root@db01 ~]# useradd mysql -s /sbin/nologin -M
```
#### 9)拷貝配置文件和啟動文件
```bash
#1.進(jìn)入配置文件和腳本的目錄
[root@db01 ~]# cd /service/mysql/support-files/
#2.拷貝配置文件
[root@db01 support-files]# cp my-default.cnf /etc/my.cnf
```
#### 10)配置system管理MySQL服務(wù)
```bash
#1.配置system管理MySQL
[root@db01 ~]# vim /usr/lib/systemd/system/mysql.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=/service/mysql/bin/mysqld --defaults-file=/etc/my.cnf
LimitNOFILE = 5000
#2.重新加載啟動文件列表
[root@db01 ~]# systemctl daemon-reload
```
#### 11)初始化數(shù)據(jù)庫
```bash
#1.進(jìn)入初始化目錄
[root@db01 support-files]# cd /service/mysql/scripts/
#2.執(zhí)行初始化命令
[root@db01 scripts]# ./mysql_install_db --user=mysql --basedir=/service/mysql --datadir=/service/mysql/data
```
#### 12)創(chuàng)建socket文件目錄(二進(jìn)制安裝沒有)
```bash
#先創(chuàng)建tmp目錄
[root@db01 ~]# mkdir /service/mysql/tmp
```
#### 13)授權(quán)數(shù)據(jù)庫目錄
```bash
[root@db01 ~]# chown -R mysql.mysql /service/mysql
[root@db01 ~]# chown -R mysql.mysql /service/mysql-5.6.46
```
#### 14)system管理啟動MySQL
```bash
[root@db01 ~]# systemctl start mysql
[root@db01 ~]# ps -ef | grep [m]ysql
mysql?????23509??????1??3 22:36 ?????????00:00:01 /usr/local/mysql/bin/mysqld --defaults-file=/etc/my.cnf
[root@db01 ~]# netstat -lntp | grep 3306
tcp6???????0??????0 :::3306?????????????????:::*????????????????????LISTEN??????23509/mysqld
```
#### 15)配置環(huán)境變量直接使用mysql
```bash
[root@db01 ~]# vim /etc/profile.d/mysql.sh?
export PATH=/service/mysql/bin:$PATH
[root@db01 ~]# source /etc/profile
```
#### 16)修改root用戶密碼
~~~bash
[root@db01 ~]# mysql -u root -p????????????#默認(rèn)root用戶密碼為空,有多種方式重置root密碼
第一種:
MySQL > SET PASSWORD=PASSWORD('123456');
Query OK, 0 rows affected (0.00 sec)
第二種:
MySQL > grant all privileges on *.* to root@'%' identified by 'oldboy';
Query OK, 0 rows affected (0.00 sec)
mysql> flush privileges;
Query OK, 0 rows affected (0.00 sec)
注意:兩種重置密碼方式有區(qū)別努酸。
~~~
### 1.2 二進(jìn)制安裝(自定義安裝目錄)
![](https://blog.sholdboyedu.com/wp-content/uploads/2021/07/2.png)
#### 1)下載二進(jìn)制包
```bash
[root@db01 ~]# wget https://downloads.mysql.com/archives/get/p/23/file/mysql-5.6.46-linux-glibc2.12-x86_64.tar.gz
```
#### 2)安裝依賴
```bash
[root@db01 ~]# yum install -y ncurses-devel libaio-devel gcc gcc-c++ glibc cmake autoconf
```
#### 3)解壓安裝包
```bash
[root@db01 ~]# tar xf mysql-5.6.46-linux-glibc2.12-x86_64.tar.gz
```
#### 4)創(chuàng)建自定義目錄
```bash
[root@db01 ~]# mkdir /service
```
#### 5)移動目錄并改名
```bash
[root@db01 ~]# mv mysql-5.6.46-linux-glibc2.12-x86_64 /service/mysql-5.6.46
```
#### 6)做軟連接
```bash
[root@db01 ~]# ln -s /service/mysql-5.6.46 /service/mysql
```
#### 7)創(chuàng)建數(shù)據(jù)庫用戶
```bash
[root@db01 ~]# useradd mysql -s /sbin/nologin -M
```
#### 8)拷貝配置文件和啟動文件
```bash
#1.進(jìn)入配置文件和腳本的目錄
[root@db01 ~]# cd /service/mysql/support-files/
#2.拷貝配置文件
[root@db01 support-files]# cp my-default.cnf /etc/my.cnf
cp: overwrite ‘/etc/my.cnf’? y
#3.拷貝啟動腳本
[root@db01 support-files]# cp mysql.server /etc/init.d/mysqld
```
#### 9)初始化數(shù)據(jù)庫
```bash
#1.進(jìn)入初始化目錄
[root@db01 support-files]# cd /service/mysql/scripts/
#2.執(zhí)行初始化命令
[root@db01 scripts]# ./mysql_install_db --user=mysql --basedir=/service/mysql --datadir=/service/mysql/data
```
#### 10)啟動數(shù)據(jù)庫
```bash
[root@db01 scripts]# /etc/init.d/mysqld start
/etc/init.d/mysqld: line 244: my_print_defaults: command not found
/etc/init.d/mysqld: line 264: cd: /usr/local/mysql: No such file or directory
Starting MySQL ERROR! Couldn't find MySQL server (/usr/local/mysql/bin/mysqld_safe)
```
#### 11)如果是二進(jìn)制安裝到自定義目錄下需要修改腳本目錄
本例中就安裝到了/service目錄下笼踩,所以需要修改腳本中的默認(rèn)路徑
```bash
[root@db01 scripts]# sed -i 's#/usr/local#/service#g' /etc/init.d/mysqld /service/mysql/bin/mysqld_safe
```
#### 12)授權(quán)數(shù)據(jù)庫目錄
```bash
[root@db01 ~]# chown -R mysql.mysql /service/mysql
[root@db01 ~]# chown -R mysql.mysql /service/mysql-5.6.46
```
#### 13)再次啟動
```bash
[root@db01 scripts]# /etc/init.d/mysqld start
Starting MySQL.Logging to '/service/mysql/data/db04.err'.
?SUCCESS!?
[root@db01 scripts]#
```
#### 14)檢查進(jìn)程和端口
```bash
[root@db01 scripts]# ps -ef | grep [m]ysql
root??????23083??????1??0 20:36 pts/0????00:00:00 /bin/sh /usr/local/mysql/bin/mysqld_safe --datadir=/usr/local/mysql/data --pid-file=/usr/local/mysql/data/db02.pid
mysql?????23191??23083??0 20:36 pts/0????00:00:00 /usr/local/mysql/bin/mysqld --basedir=/usr/local/mysql --datadir=/usr/local/mysql/data --plugin-dir=/usr/local/mysql/lib/plugin --user=mysql --log-error=db02.err --pid-file=/usr/local/mysql/data/db02.pid
[root@db01 scripts]# netstat -lntp | grep 3306
tcp6???????0??????0 :::3306?????????????????:::*????????????????????LISTEN??????23191/mysqld????????
[root@db01 scripts]#?
```
#### 15)配置system管理MySQL服務(wù)
```bash
#1.配置system管理MySQL
[root@db01 ~]# vim /usr/lib/systemd/system/mysql.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=/service/mysql/bin/mysqld --defaults-file=/etc/my.cnf
LimitNOFILE = 5000
#2.重新加載啟動文件列表
[root@db01 ~]# systemctl daemon-reload
```
#### 16)查看MySQL配置文件檢索順序
~~~bash
[root@db01 mysql]# /service/mysql/bin/mysql --help|grep 'my.cnf'
??????????????????????order of preference, my.cnf, $MYSQL_TCP_PORT,
/etc/my.cnf /etc/mysql/my.cnf /usr/local/mysql/etc/my.cnf ~/.my.cnf?
~~~
#### 17)配置my.cnf
```bash
#1.配置指定數(shù)據(jù)庫安裝目錄與數(shù)據(jù)目錄
[root@db01 scripts]# vim /etc/my.cnf
[mysqld]
basedir=/service/mysql
datadir=/service/mysql/data
#2.啟動
[root@db01 scripts]# systemctl start mysql
```
#### 19)配置環(huán)境變量直接使用mysql
```bash
[root@db01 ~]# vim /etc/profile.d/mysql.sh?
export PATH=/service/mysql/bin:$PATH
[root@db01 ~]# source /etc/profile
```
### 1.3 YUM安裝
#### 1)配置MySQL的yum源
~~~bash
[root@db01 ~]# cat /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=0
~~~
#### 2)檢查存儲庫是否正確配置
~~~bash
[root@db01 ~]#??yum repolist enabled | grep mysql
~~~
#### 3)禁用默認(rèn)的MySQL模塊
~~~bash
[root@db01 ~]# sudo yum module disable mysql
~~~
#### 4)安裝MySQL
~~~bash
[root@db01 ~]# sudo yum install mysql-community-server
~~~
#### 5)啟動MySQL
~~~bash
[root@db01 ~]#??sudo service mysqld start
Starting mysqld (via systemctl):???????????????????????????[??OK??]
~~~
#### 6)檢查MySQL運行狀態(tài)
~~~bash
[root@db01 ~]# sudo service mysqld status
~~~
#### 7)保護(hù)運行MySQL
~~~bash
[root@db01 ~]# mysql_secure_installation
~~~
### 1.4 MySQL5.6與MySQL5.7安裝的區(qū)別
#### 1.4.1 cmake的時候加入了bostorg
***建議大家使用二進(jìn)制的包安裝,已經(jīng)過了cmake階段圃郊,已經(jīng)把bostorg裝好了***
```bash
[root@db02 mysql-5.7.20]# yum install -y gcc gcc-c++ automake autoconf
[root@db02 mysql-5.7.20]# yum install make cmake bison-devel ncurses-devel libaio-devel
[root@db02 mysql-5.7.20]#
wget httpss://dl.bintray.com/boostorg/release/1.65.1/source/boost_1_59_0.tar.gz
#登錄boost.org下載也可以
[root@db02 mysql-5.7.20]# tar xf boost_1_59_0.tar.gz -C /usr/local/
[root@db02 mysql-5.7.20]#
cmake . -DCMAKE_INSTALL_PREFIX=/application/mysql-5.7.20 \
-DMYSQL_DATADIR=/application/mysql-5.7.20/data \
-DMYSQL_UNIX_ADDR=/application/mysql-5.7.20/tmp/mysql.sock \
#安裝bostorg
-DDOWNLOAD_BOOST=1 \
#安裝的目錄
-DWITH_BOOST=/usr/local/boost_1_59_0 \
-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 \
-DWITH_SSL=bundled \
-DENABLED_LOCAL_INFILE=1 \
-DWITH_EMBEDDED_SERVER=1 \
-DENABLE_DOWNLOADS=1 \
-DWITH_DEBUG=0?
```
#### 1.4.2 初始化時 使用的命令不一樣了
```bash
#5.6初始化命令
/service/mysql/scripts/mysql_install_db --user= --basedir= --datadir=
#5.7初始化命令
/usr/local/mysql/bin/mysqld --initialize --user= --basedir= --datadir=
#初始--initialize會生成一個臨時的隨機密碼簇宽,他會告訴你位置,你自己去找使用密碼登錄吧享,而且修改密碼也需要一個很復(fù)雜的密碼钞它,大小寫數(shù)字特殊符號
#想不讓他生成密碼的話,還可以用另外一個參數(shù)--initialize-insecure
```
#### 1.4.3 mysql5.7初始密碼
```
# yum安裝完畢mysql5.7殊鞭,首次初始啟動msyql會生成root的隨機密碼
# 可以通過下述命令查看
grep "temporary password" /var/log/mysqld.log
# 查看到隨機密碼后遭垛,登錄,注意密碼用單引號引起來操灿,因為隨機密碼中可能有特殊字符
mysql -uroot -p '隨機密碼'
# 設(shè)置密碼锯仪,密碼已經(jīng)不能再用弱密碼了,弱密碼會報錯
set password=password("Egon@123");
```
# 二 Windows系統(tǒng)
### 2.1 安裝
```
#1趾盐、下載:MySQL Community Server 5.7.16
http://dev.mysql.com/downloads/mysql/
#2庶喜、解壓
如果想要讓MySQL安裝在指定目錄,那么就將解壓后的文件夾移動到指定目錄谤碳,如:C:\mysql-5.7.16-winx64
#3溃卡、添加環(huán)境變量
【右鍵計算機】--》【屬性】--》【高級系統(tǒng)設(shè)置】--》【高級】--》【環(huán)境變量】--》【在第二個內(nèi)容框中找到 變量名為Path 的一行,雙擊】 --> 【將MySQL的bin目錄路徑追加到變值值中蜒简,用 瘸羡; 分割】
#4、初始化
mysqld --initialize-insecure
#5搓茬、啟動MySQL服務(wù)
mysqld # 啟動MySQL服務(wù)
#6犹赖、啟動MySQL客戶端并連接MySQL服務(wù)
mysql -u root -p # 連接MySQL服務(wù)器
```
### 2.2 將MySQL服務(wù)制作成windows系統(tǒng)服務(wù)
```
上一步解決了一些問題,但不夠徹底卷仑,因為在執(zhí)行【mysqd】啟動MySQL服務(wù)器時峻村,當(dāng)前終端會被hang住,那么做一下設(shè)置即可解決此問題:
注意:--install前锡凝,必須用mysql啟動命令的絕對路徑
# 制作MySQL的Windows服務(wù)粘昨,在終端執(zhí)行此命令:
"c:\mysql-5.7.16-winx64\bin\mysqld" --install
# 移除MySQL的Windows服務(wù),在終端執(zhí)行此命令:
"c:\mysql-5.7.16-winx64\bin\mysqld" --remove
注冊成服務(wù)之后窜锯,以后再啟動和關(guān)閉MySQL服務(wù)時张肾,僅需執(zhí)行如下命令:
# 啟動MySQL服務(wù)
net start mysql
# 關(guān)閉MySQL服務(wù)
net stop mysql
```