mysql安裝(linux下,二進制安裝,8.0)


【0】環境

OS:Centos7.8

SF:Mysql8.0+最新版

【1】下載解壓

【1.1】下載

官網:https://dev.mysql.com/downloads/mysql/

linux:wget https://cdn.mysql.com//Downloads/MySQL-8.0/mysql-8.0.21-linux-glibc2.17-x86_64-minimal.tar.xz

  

 

 

 我們這里要一個最小安裝版就好了

  

 

 

那么,我這里實際下載演示的文件的是8.0.20

【1.2】上傳|解壓|軟鏈接

(1)構造目錄上傳文件

mkdir /soft
#上傳,無論是rz,或者其他客戶端工具,或者用的linux下載直接copy/mv,把文件放到/soft 目錄下

(2)解壓目錄

在8.0.16之后使用了xz壓縮方式,而不是傳統的gz壓縮方式,所以解壓代碼略有不同

#以前的 .gz的壓縮表使用 -zxvf,現在 .xz的壓縮包使用 -Jxvf
tar
-Jxvf mysql-8.0.20-linux-x86_64-minimal.tar.xz

(3)生成軟鏈接

為了方便后續引用這個目錄,給個軟鏈接,方便書寫該目錄

ln -s mysql-8.0.20-linux-x86_64-minimal mysql

最終效果

  

 

 

 【2】環境准備(防火牆|SELINUX|環境變量)

【2.1】關閉SELINUX

SELINUX的三種模式:

  enforcing   :- SELinux security policy is enforced.(強制模式,違反SELinux 規則的行為會被阻止且記錄到日志中)
  permissive   :- SELinux prints warnings instead of enforcing.(寬容模式,違反SELinux 規則的行為只會記錄到日志中,不會被阻止)
  disabled     :- No SELinux policy is loaded.(關閉SELinux)

查看SELinux狀態:

1、/usr/sbin/sestatus -v      ##如果SELinux status參數為enabled即為開啟狀態
SELinux status:                 enabled

2、getenforce                 ##檢查當前限制級別

設置完成后,應該如下:  

  

這里我們,臨時修改為寬容模式,再修改配置文件永久關閉

#1、臨時關閉(不用重啟機器):
   setenforce 0                  ##設置SELinux 成為permissive模式
                     ##setenforce 1 設置SELinux 成為enforcing模式
#2、修改配置文件需要重啟機器:

修改/etc/selinux/config 文件
將SELINUX=enforcing改為SELINUX=disabled

設置完成后,文件應該修改如下:

  

 

 

【2.2】關閉防火牆

簡單搭建就不做防火牆控制了,后續有興趣大家可以自行百度如何添加mysql到防火牆白名單;

stop firewalld
status firewalld

最終效果如下:

  

 

 

【2.3】環境變量 

我們因為軟件放到這個路徑的  /soft/mysql,所以我們加到環境變量里的路徑就是  /soft/mysql/bin

echo "export PATH=${PATH}:/soft/mysql/bin"  
echo "export PATH=${PATH}:/soft/mysql/bin">>/etc/profile
source /etc/profile

設置完后,我們看看mysql命令是否可以直接使用了,如下圖,就OK了。 

 

 

 

【3】安裝mysql

【3.1】構建賬戶與目錄

(1)構建賬戶

groupadd mysql
useradd mysql -g mysql -s /sbin/nologin

(2)構建目錄/設置權限

mkdir -p /data/mysql/3306
mkdir -p /data/mysql/3306/data
chmod 755 -R /data/mysql
chown -R mysql:mysql /data/mysql
umask 0022 /data/mysql
touch /etc/my.cnf
chown mysql:mysql /etc/my.cnf
chmod 755 /etc/my.cnf

 

【3.2】mysql配置文件

這里為什么要把配置文件放在 /etc/my.cnf ?  因為默認 mysql 第一引用配置文件的路徑就是這個,為了省卻麻煩,就放在這里吧。

vim /etc/my.cnf

[client]
port = 3306
socket = /data/mysql/3306/mysql.sock
default-character-set=utf8mb4

[mysql]
disable-auto-rehash #允許通過TAB鍵提示
default-character-set = utf8mb4
connect-timeout = 10

[mysqld]
user=mysql
server-id = 3306
port = 3306
socket = /data/mysql/3306/mysql.sock
pid-file = /data/mysql/3306/mysql.pid
basedir = /soft/mysql
datadir = /data/mysql/3306/data
#bind_address = 10.10.10.11
autocommit = 1

default_authentication_plugin=mysql_native_password
character-set-server=utf8mb4
explicit_defaults_for_timestamp=true
lower_case_table_names=1
back_log=103
max_connections=10000
max_connect_errors=100000
table_open_cache=512
external-locking=FALSE
max_allowed_packet=32M
sort_buffer_size=2M
join_buffer_size=2M
thread_cache_size=51
transaction_isolation=READ-COMMITTED
tmp_table_size=96M
max_heap_table_size=96M



###***logs
long_query_time = 10
slow_query_log = 1
slow_query_log_file=/data/mysql/3306/slow.log

#log-warnings = 1
log_error_verbosity=3

log-error = /data/mysql/3306/mysql.err
log_output = FILE #參數log_output指定了慢查詢輸出的格式,默認為FILE,你可以將它設為TABLE,然后就可以查詢mysql架構下的slow_log表了


#log-queries-not-using-indexes
#log-slow-slave-statements
max_binlog_size = 1G
#max_relay_log_size = 1G

# replication
log-bin=/data/mysql/3306/mysql-bin
#server-id=1
#binlog_format= ROW
#gtid_mode = on
#enforce_gtid_consistency = 1
#log_slave_updates   = 1
#master-info-repository=TABLE
#relay-log-info-repository=TABLE

# innodb storage engine parameters
innodb_buffer_pool_size=500M
innodb_data_file_path=ibdata1:100M:autoextend:max:5G #redo
innodb_temp_data_file_path = ibtemp1:100M:autoextend:max:10G
#innodb_file_io_threads=4 #默認的是4
innodb_log_buffer_size=16M
innodb_log_file_size=256M #undo
innodb_log_files_in_group=2
innodb_lock_wait_timeout=50
innodb_file_per_table=1 #獨立表空間

【3.3】mysql 初始化

創建錯誤日志,以防沒權限生成

touch /data/mysql/3306/mysql.err
chmod 755 /data/mysql/3306/mysql.err
chown mysql:mysql /data/mysql/3306/mysql.err

 

 

注意,我這里加了 insecure,不會設置初始mysql 密碼

mysqld --defaults-file=/etc/my.cnf --datadir=/data/mysql/3306/data --user=mysql  --initialize-insecure --console 

如果沒有報錯顯示在屏幕上,那多半沒有問題了,我們進目錄看看有沒有問題,數據是否生成,詳情如下:

  

 

 

 再看看錯誤日志文件,mysql.err 中有沒有報錯

cat mysql.err|grep "\[error\]"

如下圖:沒有任何輸出就沒有問題了。

  

【3.4】啟動 mysql 

mysqld_safe --defaults-file=/etc/my.cnf &

  

 

 核驗 mysql 服務是否啟動:如下圖,就啟動成功了

  

 

【3.5】登錄mysql,修改密碼

直接輸入 mysql  就可以進去,因為我們沒有配置密碼,用了 insecure 選項

  

 

 修改密碼為123456

alter user root@localhost identified with mysql_native_password by '123456';
flush privileges;

  

 

 然后我們重登驗證,直接mysql無法登錄了,需要密碼了

  

【3.6】新建外網可以連接的 root 賬戶

#創建遠程可以登錄的 root 賬戶,設置密碼為 123456
create user 'root'@'%' identified with mysql_native_password by '123456'; flush privileges;

#核驗
select user,host from mysql.user;

  

 

然后我們用 navicat 連接測試一下

  

 

 

 

 到此,就裝好了!,如果只是簡單用一下,這就夠了。

【4】把 mysql 封裝成系統服務

參考:linux服務管理與啟停(開機自啟與自定義服務)

【4.1】CentOS7.X

(1)編輯配置文件:vim /usr/lib/systemd/system/mysql.service

注意,如果要用以下代碼:需要修改2個地方,下面的這個值是本文規划的路徑,若是和本文規划不同請自行替換

PIDFile=/data/mysql/3306/mysql.pid ExecStart=/soft/mysql/support-files/mysql.server start
[Unit]
Description=Mysql
After=syslog.target network.target remote-fs.target nss-lookup.target

[Service]
Type=forking
PIDFile=/data/mysql/3306/mysql.pid
ExecStart=/soft/mysql/support-files/mysql.server start
ExecReload=/bin/kill -s HUP $MAINPID
ExecStop=/bin/kill -s QUIT $MAINPID
PrivateTmp=false

[Install]
WantedBy=multi-user.target

(2)停止現在的服務;

#先看看mysql進程是否啟動了
ps -ef|grep mysql

#如果啟動了為了測試我們可以先關閉或者強制殺死
  

(3)使用服務

#【1】重新加載服務列表,以便可以識別我們新建的服務
systemctl daemon-reload

#【2】啟動mysql /關閉 mysql
systemctl start mysql
#systemctl stop mysql

#【3】查看mysql 服務狀態
systemctl status mysql

#【4】設置 mysql 服務開機自啟
systemctl enable mysql

啟動了之后,我們可以看到狀態

  

從上到下,我們一個一個說:

第1個框中的 enable :這個就是允許開機自啟

第2個框中的 active(running):這個就是表示當前的服務狀態,是正在運行的

第3個框中的 這2個表示的是啟動命令 

【4.2】 CentOS6.X 

#【1】腳本封裝成服務
cp
/soft/mysql/support-files/mysql.server /etc/init.d/

#【2】啟動、停止服務
service mysql start
#service mysql stop

#【3】查看狀態
service mysql status

#【4】開機自啟
chkconfig --level 3 httpd on

 

【5】操作系統優化

參考:https://www.cnblogs.com/gered/p/10296038.html

 

【6】本文自動化安裝腳本

#mysql測試機自動化安裝
flag=`rpm -qa|grep mariadb`
if [  ${flag} ];then
    rpm -e ${flag} --nodeps
fi
cd /soft
tar -Jxvf mysql-8.0.20-linux-x86_64-minimal.tar.xz
ln -s mysql-8.0.20-linux-x86_64-minimal mysql
echo "export PATH=${PATH}:/soft/mysql/bin" >>/etc/profile
source /etc/profile
groupadd mysql
useradd mysql -g mysql -s /sbin/nologin
mkdir -p /data/mysql/3306/data
chown -R mysql:mysql /etc/my.cnf
chmod 755 /etc/my.cnf
touch /data/mysql/3306/mysql.err
chmod 755 -R /data/mysql
chown -R mysql:mysql /data/mysql
mysqld --defaults-file=/etc/my.cnf --initialize-insecure

vi /usr/lib/systemd/system/mysql.service
#[Unit]
Description=Mysql
After=syslog.target network.target remote-fs.target nss-lookup.target

#[Service]
Type=forking
PIDFile=/data/mysql/3306/mysql.pid
ExecStart=/soft/mysql/support-files/mysql.server start
ExecReload=/bin/kill -s HUP $MAINPID
ExecStop=/bin/kill -s QUIT $MAINPID
PrivateTmp=false

[Install]
WantedBy=multi-user.target
systemctl daemon-reload
systemctl start mysql
systemctl enable mysql

 


免責聲明!

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



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