【MySQL】MySQL8安裝

来源:https://www.cnblogs.com/kuxingsengwm/archive/2023/01/16/17053038.html
-Advertisement-
Play Games

1. MySQL8安裝 安裝環境 操作系統:CentOS7 MySQL版本:8.0.28 安裝方式:二進位Generic 軟體路徑:/app/database 數據路徑:/data/3306 日誌路徑:/binlog/3306 MySQL Community Server 社區版官網下載鏈接 MyS ...


1. MySQL8安裝

安裝環境

  • 操作系統:CentOS7
  • MySQL版本:8.0.28
  • 安裝方式:二進位Generic
  • 軟體路徑:/app/database
  • 數據路徑:/data/3306
  • 日誌路徑:/binlog/3306

MySQL Community Server 社區版官網下載鏈接

MySQL :: Download MySQL Community Server (Archived Versions)

2. MySQL三種安裝方式

  • 源碼安裝:編譯安裝,可定製化高,安裝難度大時間長,不適合小白,不推薦
  • rpm包安裝:安裝簡單方便,但僅限rpm系列Linux系統,可定製化不高,生產不推薦
  • 二進位安裝:解壓即用,不限平臺,官方已編譯,可定製,推薦

3. 二進位版本安裝

3.1 二進位安裝包說明

Untitled

二進位版本會有三個安裝包下載

  • Compressed TAR Archive:主要安裝包,如果沒有特殊要求只下載這個包
  • Compressed TAR Archive, Test Suite:測試包,一般用不著
  • TAR:包含以上兩個包

3.2 MySQL二進位版本軟體目錄說明

解壓後目錄如下

drwxr-xr-x.  2 7161 31415   4096 Dec 18  2021 bin # mysql所有可執行程式命令,登陸、備份等等
drwxr-xr-x.  2 7161 31415     55 Dec 18  2021 docs # mysql文檔
drwxr-xr-x.  3 7161 31415   4096 Dec 18  2021 include # 依賴庫
drwxr-xr-x.  6 7161 31415    201 Dec 18  2021 lib # 函數庫
-rw-r--r--.  1 7161 31415 276595 Dec 18  2021 LICENSE
drwxr-xr-x.  4 7161 31415     30 Dec 18  2021 man # 幫助文件 
-rw-r--r--.  1 7161 31415    666 Dec 18  2021 README
drwxr-xr-x. 28 7161 31415   4096 Dec 18  2021 share
drwxr-xr-x.  2 7161 31415     77 Dec 18  2021 support-files # 腳本存放目錄

3.3 安裝前環境準備

3.3.1 檢查是否已安裝MySQL

# 查看rpm是否有安裝
rpm -qa | grep -i mysql  # -i 忽略大小寫
# 或者
yum list installed | grep mysql

# 查看mysql服務是否在運行
systemctl status mysqld.service

# 卸載mysql
yum remove mysql-xxx mysql-xxx mysql-xxx mysqk-xxxx

# 刪除mysql相關文件 慎用!!
find / -name mysql | xargs rm -rf 
mv /etc/my.cnd /etc/my.cnd_backup

在安裝之前最好檢查一下,如果有務必刪除乾凈,包括日誌文件和數據文件。

3.3.2 創建MySQL用戶和組

useradd -s /sbin/nologin mysql
id mysql

3.3.3 創建主要目錄

  • 軟體目錄:存放MySQL軟體
  • 數據目錄:存放MySQL數據,推薦使用埠號作為目錄名稱
  • 日誌目錄:存放binlog日誌,推薦使用埠號作為目錄名稱

註意:生產環境下軟體目錄、數據目錄、日誌目錄不要單獨存放在一個磁碟下!

mkdir -p /app/database  # 軟體目錄
mkdir -p /data/3306  # 數據目錄
mkdir -p /binlog/3306  # 日誌目錄

設置目錄許可權給mysql用戶

chown -R mysql:mysql /app /data /binlog

3.3.4 下載並解壓

註意:千萬不要下載到32位的包,一走眼就很容易搞混!一定是glibc2.12-x86_64

wget https://downloads.mysql.com/archives/get/p/23/file/mysql-8.0.28-linux-glibc2.12-x86_64.tar.xz
tar -xf mysql-8.0.28-linux-glibc2.12-x86_64.tar.xz

3.4 安裝

3.4.1 設置環境變數

# 做軟連接,文件名太長不方便後續設置。不推薦修改文件名,修改了不能很快的知道mysql版本
ln -s mysql-8.0.28-linux-glibc2.12-x86_64/ mysql 

# 編輯當前用戶環境變數文件
vim ~/.bash_profile 
# 新增修改如下內容
MYSQL_HONE=/app/database/mysql
PATH=$PATH:$HOME/bin:$MYSQL_HONE/bin

export PATH
# 讓環境變數生效
source ~/.bash_profile

# 驗證
# mysql -V
mysql  Ver 8.0.28 for Linux on x86_64 (MySQL Community Server - GPL)

3.4.2 初始化系統表

系統表是mysql運行必備的表,不可缺失!本次初始化選擇手動設置密碼方式

mysqld --initialize-insecure --user=mysql --basedir=/app/database/mysql --datadir=/data/3306

# 參數說明
--initialize-insecure: reate the default database and exit. Create a super userwith empty password.
--initialize:Create the default database and exit. Create a super userwith a random expired password and store it into the log.
# 以上這兩參數任選其一,區分就是一個自動生成密碼,一個沒有密碼需要手動設置
--user=name: Run mysqld daemon as user.
--basedir=name: Path to installation directory. All paths are usuallyresolved relative to this
--datadir=name: Path to the database root directory

註意:初始化數據目錄一定是空目錄!否則初始化失敗

3.4.3 設置MySQL配置文件

配置文件路徑:/etc/my.cnf

以下配置文件僅供參考!根據實際機器配置來修改具體設置。

[mysqld]
user=mysql
basedir=/app/database/mysql
datadir=/data/3306
server_id=6
socket=/tmp/mysql.sock
bind-address = 0.0.0.0

# connect 
max_connections = 1000
max_connect_errors = 200

# charset
character_set_server = utf8mb4

# InnoDB Settings
innodb_buffer_pool_size = 2G
innodb_read_io_threads = 15
innodb_write_io_threads = 15
# innodb_flush_log_at_trx_commit = 0
innodb_buffer_pool_instances = 8
innodb_log_file_size = 1G
innodb_log_buffer_size = 64M
# innodb_flush_method = O_DIRECT
innodb_page_cleaners = 16

# session memory settings
read_buffer_size = 32M
read_rnd_buffer_size = 32M
sort_buffer_size = 64M
tmp_table_size = 64M
join_buffer_size = 128M
thread_cache_size = 64

# slow log
slow_query_log = 1
slow_query_log_file = slow.log
long_query_time = 10
min_examined_row_limit = 100
log-queries-not-using-indexes
log_throttle_queries_not_using_indexes = 10
log_timestamps = system

# log settings
log_error = error.log

# client settings
[mysql]
prompt = (\\u@\\h) [\\d]>\\_
socket=/tmp/mysql.sock
no-auto-rehash

3.4.3 準備MySQL啟動腳本

啟動腳本存放在support-files目錄下的mysql.server,將啟動腳本拷貝到/etc/init.d方便運行管理

CentOS7有兩種啟動方式,一個是init.d,一個是systemctl,這裡只用第一種,第二種方式具體參考百度或者官網。

cp mysql.server /etc/init.d/mysqld

3.4.5 啟動MySQL

如果沒有意外的話,可以啟動成功。有一種情況會啟動失敗,啟動腳本中設置的啟動路徑不在環境變數里,此時需要設置軟連接到腳本中對應的路徑。

/etc/init.d/mysqld start

3.4.6 驗證

# /etc/init.d/mysqld status
SUCCESS! MySQL running (11794)

# mysql
Welcome to the MySQL monitor.  Commands end with ; or \g.
Your MySQL connection id is 1397
Server version: 8.0.28 MySQL Community Server - GPL

Copyright (c) 2000, 2022, Oracle and/or its affiliates.

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.

(root@localhost) [(none)]>

3.5 安裝完成後的尾收工作

3.5.1 設置管理員密碼

mysqladmin -uroot password "WeiMin@123"

3.5.2 CentOS7設置開機自啟動

設置開機自啟動的方式有很多,這裡用最簡單的一種。

註意:

  • 開機自啟動的前提是啟動腳本必須存放在/etc/init.d目錄下!!
  • 生產環境最好重啟驗證!!
# 設置開機自啟動
chkconfig --add mysqld

# 查看mysqld是否在列表中
chkconfig --list
mysqld          0:off   1:off   2:on    3:on    4:on    5:on    6:off
netconsole      0:off   1:off   2:off   3:off   4:off   5:off   6:off
network         0:off   1:off   2:on    3:on    4:on    5:on    6:off

3.5.3 CentOS7關閉防火牆、關閉開機自啟動防火牆

iptables -F
systemctl disable firewalld.service

3.5.4 關閉selinux、修改selinux配置文件永久關閉

setenforce 0

# vim /etc/selinux/config
SELINUX=disabled

3.6 忘記root密碼處理辦法

  • —skip-grant-tables:跳過授權表,關閉用戶認證
  • —skip-networking:跳過遠程登錄,只能本地登陸
# 1. 關閉資料庫
/etc/init.d/mysqld stop

# 2. 啟動資料庫到維護模式,並放到後臺
mysqld_safe --skip-networking --skip-grant-tables &

# 3. 登陸mysql並修改密碼
flush privileges;
alter user root@'localhost' identified by 'Admin@123';

# 4. 關閉資料庫,啟動驗證
/etc/init.d/mysqld stop
mysql -uroot -pAdmin@123

3.7 啟動資料庫方式

啟動有兩種方式,不建議使用命令執行!!

  • 執行官方提供的啟動腳本
  • 設置systemctl腳本

本質上啟動腳本執行的是mysqld_safe --datadir=/data/3306 --pid-file=/data/3306/mysql.pid 這條命令,所以手動執行這條命令也可以啟動mysql

# ps -ef | grep mysqld
root       6067      1  0 03:18 pts/0    00:00:00 /bin/sh /app/database/mysql/bin/mysqld_safe --datadir=/data/3306 --pid-file=/data/3306/mysql.pid
mysql      6519   6067  1 03:18 pts/0    00:00:01 /app/database/mysql/bin/mysqld --basedir=/app/database/mysql --datadir=/data/3306 --plugin-dir=/app/database/mysql/lib/plugin --user=mysql --log-error=error.log --pid-file=/data/3306/mysql.pid --socket=/tmp/mysql.sock

Untitled

3.8 關閉資料庫方式

有三種方式正常關閉資料庫,不建議使用kill來強行關閉資料庫(被強姦的感覺)

  • 登陸數據,執行shutdown命令關閉
  • 啟動腳本關閉,/etc/init.d/mysqld stop
  • systemctl關閉,前提是設置了腳本,命令和就是服務的關閉命令,沒有特別的地方。

您的分享是我們最大的動力!

-Advertisement-
Play Games
更多相關文章
  • keytool 是 Java 自帶的一個安全相關的工具,用於管理密鑰和證書;本文主要介紹其基本使用;文中所使用到的軟體版本:Java 1.8.0_321。 1、簡介 keytool 命令是一個密鑰和證書管理的工具。它允許用戶使用數字簽名管理自己的公鑰/私鑰對和相關證書,用於自我身份驗證(向其他用戶和 ...
  • 1 簡介 如果要選擇GCP為雲平臺,則經常需要創建GCE(Google Compute Engine),有以下幾種方式: (1) 在瀏覽器創建 (2) 命令 gcloud (3) Terraform 在開始之前,可以查看:《初始化一個GCP項目並用gcloud訪問操作》。 2 GCP Console ...
  • 前言 眾所周知記憶體緩存(MemoryCache)數據是從記憶體中獲取,性能表現上是最優的,但是記憶體緩存有一個缺點就是不支持分散式,數據在各個部署節點上各存一份,每份緩存的過期時間不一致,會導致幻讀等各種問題,所以我們實現分散式緩存通常會用上Redis 但如果在高併發的情況下讀取Redis的緩存,會進行 ...
  • 前言 上一篇文章我們講了怎麼使用 NET.AutoApi 這個組件來動態生成webapi介面,讓我們不需要創建控制器去轉發業務層代碼。這篇文章主要是講解NET.AutoApi 底層是怎麼實現動態生成webapi介面 我們回顧下- NET.AutoApi 最終的效果 NET.AutoApi內部原理 其 ...
  • ● 什麼是廠商和軟體商: 廠商:一般是指Centos、紅帽、ubantu、suse等等,各linux發行版操作系統的發行廠家,廠家會維護系統的軟體,做相應的測試、補丁發佈、安全更新等 軟體商:一般指各軟體發行商,例如openssh、docker、nginx、tomcat等等,他們是將自己的軟體產品進 ...
  • Elasticsearch(簡稱:ES)功能強大,其背後有很多預設值,或者預設操作。這些操作優劣並存,優勢在於我們可以迅速上手使用 ES,劣勢在於,其實這些預設值的背後涉及到很多底層原理,怎麼做更合適,只有數據使用者知道。用 ES 的話來說,你比 ES 更懂你的數據,但一些配置信息、限制信息,還是需... ...
  • SummingMergeTree引擎繼承自MergeTree。區別在於,當合併SummingMergeTree表的數據片段時,ClickHouse會把所有具有相同主鍵的行合併為一行,該行包含了被合併的行中具有數值數據類型的列的彙總值。如果主鍵的組合方式使得單個鍵值對應於大量的行,則可以顯著的減少存儲 ...
  • 用正則表達式進行搜索 正則表達式介紹 正則表達式是用來匹配文本的特殊的串(字元集合)。 使用MySQL正則表達式 MySQL用WHERE子句對正則表達式提供了初步的支持,允許你指定正則表達式,過濾SELECT檢索出的數據。MySQL僅支持多數正則表達式實現的一個很小的子集。 基本字元匹配 SELEC ...
一周排行
    -Advertisement-
    Play Games
  • 背景 在瀏覽器中訪問本地靜態資源html網頁時,可能會遇到跨域問題如圖。 是因為瀏覽器預設啟用了同源策略,即只允許載入與當前網頁具有相同源(協議、功能變數名稱和埠)的內容。 WebView2預設情況下啟用了瀏覽器的同源策略,即只允許載入與主機相同源的內容。所以如果我們把靜態資源發佈到iis或者通過node ...
  • 最近看幾個老項目的SQL條件中使用了1=1,想想自己也曾經這樣寫過,略有感觸,特別拿出來說道說道。編寫SQL語句就像炒菜,每一種調料的使用都會影響菜品的最終味道,每一個SQL條件的加入也會影響查詢的執行效率。那麼 1=1 存在什麼樣的問題呢?為什麼又會使用呢? ...
  • 好久不見,我又回來了。 給大家分享一個我最近使用c#代碼操作ftp伺服器的代碼示例: 1 public abstract class FtpOperation 2 { 3 /// <summary> 4 /// FTP伺服器地址 5 /// </summary> 6 private string f ...
  • 一:背景 1. 講故事 過年喝了不少酒,腦子不靈光了,停了將近一個月沒寫博客,今天就當新年開工寫一篇吧。 去年年初有位朋友找到我,說他們的系統會偶發性崩潰,在網上也發了不少帖子求助,沒找到自己滿意的答案,讓我看看有沒有什麼線索,看樣子這是一個牛皮蘚的問題,既然對方有了dump,那就分析起來吧。 二: ...
  • 自己製作的一個基於Entity Framework Core 的資料庫操作攔截器,可以列印資料庫執行sql,方便開發調試,代碼如下: /// <summary> /// EF Core 的資料庫操作攔截器,用於在資料庫操作過程中進行日誌記錄和監視。 /// </summary> /// <remar ...
  • 本文分享自華為雲社區《Go併發範式 流水線和優雅退出 Pipeline 與 Cancellation》,作者:張儉。 介紹 Go 的併發原語可以輕鬆構建流數據管道,從而高效利用 I/O 和多個 CPU。 本文展示了此類pipelines的示例,強調了操作失敗時出現的細微之處,並介紹了乾凈地處理失敗的 ...
  • 在上篇文章中,我們介紹到在多線程環境下,如果編程不當,可能會出現程式運行結果混亂的問題。出現這個原因主要是,JMM 中主記憶體和線程工作記憶體的數據不一致,以及多個線程執行時無序,共同導致的結果。 ...
  • 1、下載安裝包首先、進入官網下載安裝包網址:https://www.python.org/downloads/windows/下載步驟:進入下載地址,根據自己的電腦系統選擇相應的python版本 選擇適配64位操作系統的版本(查看自己的電腦操作系統版本), 點擊下載安裝包 也可以下載我百度雲分享的安 ...
  • 簡介 git-commit-id-maven-plugin 是一個maven 插件,用來在打包的時候將git-commit 信息打進jar中。 這樣做的好處是可以將發佈的某版本和對應的代碼關聯起來,方便查閱和線上項目的維護。至於它的作用,用官方說法,這個功能對於大型分散式項目來說是無價的。 功能 你 ...
  • 序言 在數字時代,圖像生成技術正日益成為人工智慧領域的熱點。 本討論將重點聚焦於兩個備受矚目的模型:DALL-E和其他主流AI繪圖方法。 我們將探討它們的優勢、局限性以及未來的發展方向。通過比較分析,我們期望能夠更全面地瞭解這些技術,為未來的研究和應用提供啟示。 Q: 介紹一下 dall-e Ope ...