# MySQL在Linux下Generic安裝
##### 在[官網](https://downloads.mysql.com/archives/community/)選擇并下載安裝包
> `mysql-5.7.28-linux-glibc2.12-x86_64.tar.gz` [點擊下載](https://downloads.mysql.com/archives/get/p/23/file/mysql-5.7.28-linux-glibc2.12-x86_64.tar.gz)
>
> Product Version:`5.7.28`
>
> Operating System:`Linux - Generic`
>
> OS Version:`Linux - Generic (glibc2.12) (x86, 64-bit)`
##### 下載系統原有MySQL
```shell
rpm -qa | grep mariadb # mariadb是CentOS7自帶的一種MySQL版本。查看是否已經安裝?
```
```shell
rpm -e --nodeps mariadb-libs-* # 強制卸載mariadb數據庫。
```
###### 安裝MySQL所需依賴
```shell
yum install -y libaio # 一般CentOS7系統自帶,不需要安裝。
```
##### 為MySQL獨立創建用戶和組
> `id mysql` # 先檢查是否已經創建過`mysql`用戶
```shell
groupadd mysql
useradd -r -g mysql -s /bin/false mysql
```
##### 解壓安裝包
```shell
tar -zxvf mysql-5.7.28-linux-glibc2.12-x86_64.tar.gz -C /usr/local/
```
> /usr/local/mysql-5.7.28-linux-glibc2.12-x86_64
##### 創建配置文件
```shell
cat>/usr/local/mysql-5.7.28-linux-glibc2.12-x86_64/my.cnf<<EOF
[client]
port=3306
socket=/tmp/mysql.sock
[mysqld]
port=3306
socket=/tmp/mysql.sock
user=mysql
character-set-server=utf8
basedir=/usr/local/mysql-5.7.28-linux-glibc2.12-x86_64
datadir=/usr/local/mysql-5.7.28-linux-glibc2.12-x86_64/data
pid-file=/usr/local/mysql-5.7.28-linux-glibc2.12-x86_64/data/mysql.pid
log_error=/usr/local/mysql-5.7.28-linux-glibc2.12-x86_64/data/mysql.err
EOF
```
##### 修改權限
```shell
chown -R mysql:mysql /usr/local/mysql-5.7.28-linux-glibc2.12-x86_64
```
##### 初始化
```shell
/usr/local/mysql-5.7.28-linux-glibc2.12-x86_64/bin/mysqld \
--defaults-file=/usr/local/mysql-5.7.28-linux-glibc2.12-x86_64/my.cnf \
--initialize
```
###### 查看錯誤日志(包含初始密碼)
```shell
tail -f /usr/local/mysql-5.7.28-linux-glibc2.12-x86_64/data/mysql.err
```
##### mysql_ssl_rsa_setup
```shell
/usr/local/mysql-5.7.28-linux-glibc2.12-x86_64/bin/mysql_ssl_rsa_setup \
--defaults-file=/usr/local/mysql-5.7.28-linux-glibc2.12-x86_64/my.cnf
```
##### 啟動MySQL
```shell
/usr/local/mysql-5.7.28-linux-glibc2.12-x86_64/bin/mysqld_safe \
--defaults-file=/usr/local/mysql-5.7.28-linux-glibc2.12-x86_64/my.cnf &
```
---
##### 登錄MySQL
```shell
/usr/local/mysql-5.7.28-linux-glibc2.12-x86_64/bin/mysql -uroot -p
```
##### 修改密碼
```mysql
alter user 'root'@'localhost' identified by 'root';
```
##### 允許root遠程連接
```mysql
use mysql;
update user set host = '%' where user = 'root';
select host, user from user;
flush privileges;
```
###### 開放端口
```shell
firewall-cmd --zone=public --add-port=3306/tcp --permanent;
firewall-cmd --reload;
firewall-cmd --list-port;
```