MySQL概述安裝

来源:https://www.cnblogs.com/xiaolindang/archive/2023/11/18/17115886.html
-Advertisement-
Play Games

本文介紹MySQL和PostgreSQL的一些特性對比,讓大家瞭解二者的優劣,更好的做出選擇。當前國內的現狀,互聯網公司使用MySQL的較多,PostgreSQL的使用比例反而不高,但相信看到PG的新特性後,你會愛上她。當然MySQL作為最流行的資料庫,依然會吸引大部分人的眼球。 PostgreSQ ...


一,資料庫概述

1.為什麼要使用資料庫

  1. 將數據持久化。

  2. 持久化主要作用:是將記憶體中的資料庫存儲在關係型資料庫中,本質也就是存儲在磁碟文件中。

  3. 資料庫在橫向上的存儲數據的條數,以及在縱向上存儲數據的豐富度,都要好於其他介質。

2.資料庫與資料庫管理系統

1.資料庫的相關概念

  1. DB:資料庫(Database)即為存儲數據的 “倉庫”,其本質是一個文件系統。
  2. DBMS:資料庫管理系統。是一種操作和管理資料庫的大型軟體。用於建立,使用和維護資料庫,對資料庫進行統一管理和控制。用戶通過資料庫管理系統訪問資料庫中表內的數據。
  3. SQL:結構化查詢語言,專門用來與資料庫通信的語言。

2.DB 與 DBMS 的關係

資料庫管理系統(DBMS)可以管理多個資料庫,一個管理系統對應一個或多個資料庫,一個資料庫對應多個表,一張表對應多條數據,一條數據對應多個欄位。

3.常見的資料庫管理系統排名(DBMS)

查看排名的網站:https://db-engines.com/en/ranking

3 關係型數據於非關係型資料庫

1.關係型資料庫 - RDBMS

  1. 該類型資料庫是 "最古老" 的資料庫類型,是將複雜的數據結構,歸結為簡單的二維表格形式。
  2. 關係型資料庫,是以 "行-row" 和 "列-column" 的形式存儲數據。一系列的 "行" 和 "列" 稱為 “表” ,一組表組成一個 "庫-database"。
  3. 表與表之間的數據記錄是有關係的。關係型資料庫,也就是建立在 "關係模型" 基礎上的資料庫。
  4. 使用 SQL 語言查詢數據。
  • 優勢:
  1. 複雜查詢:使用 SQL 語句方便在一個表或多個表之間做非常複雜的數據查詢。
  2. 事務支持:資料庫安全性高,等...

2.非關係型資料庫 - N-RDBMS

非關係型資料庫,是傳統關係型資料庫,捨得版本。基於鍵值對存儲數據,不需要經過 SQL 語言的解析,"性能非常高"。同時,通過減少不常用的功能,從而提供性能。

  • 非關係型資料庫的種類:
  1. 鍵值型資料庫:Redis。
  2. 文檔型資料庫:MongoDB。
  3. 搜索引擎資料庫:Elasticsearch。
  4. 列式資料庫:HBase。
  5. 圖形資料庫:Neo4J。
  6. 其他類型的非關係資料庫等...

4.關係型資料庫設計規則

  • 關係型資料庫的典型數據結構就是 "數據表" ,這些 "數據表" 組成都是結構化的。
  • 將數據放到表中,表再放到庫中。
  • 一個資料庫中可以有多個表,每個表都有一個名字,用來標識自己。表名要具有唯一性。
  • 表具有一些特性,這些特性定義了數據在表中如何存儲,類似就 JAVA 和 Python 中 "類" 的設計

1.表,行,列

ORM-面向對象思想(對象關係映射):

  1. 資料庫中的一個表 <----對應----> JAVA 中的一個類。
  2. 表中的一條數據 <----對應----> 類的一個對象實例。
  3. 表中的一個列 <----對應----> 類中的一個屬性,成員變數。

2.表的關聯關係

表與表之間的數據記錄是存在關係的,一般這種使用 "關係模型" 來表示。常見的有以下四種關聯關係:

  1. 一對一關聯(一個人員對應一個用戶)。
  2. 一對多關聯(一個圖層對應多個點位)。
  3. 多對多關聯(一個用戶對應多個角色,一個角色對應多個用戶)。
  4. 自我引用(類別表)。

1.一對一關聯

  • 可用於優化查詢數據。

當一張表中的欄位(列)太多時,在查詢時會造成大量記憶體冗餘。查詢效率低。因此我們可以根據(常用欄位或者說常用業務)將表拆為兩張或多張表,表之間的關係是:"一對一的關係",從而提高查詢效率。

  • 兩種建表原則:
  1. 外鍵唯一:"主表" 的主鍵對應 "從表" 的外鍵(唯一),形成主外鍵關係,外鍵唯一。
  2. 外鍵是主鍵:"主表" 的主鍵和 "從表" 的主鍵,形成主外鍵關係。

2. 一對多關聯

  • 可用於存儲數據關係為一對多的數據,例如:圖層表對應多條點位數據。

建表原則:在 "從表-圖層表" 創建一個欄位,該欄位作為外鍵指向 "主表-點位表" 的主鍵,建立一對多的關係。

3.多對多關聯

建表原則:要表示多對多關係,必須創建第三張表,該表通常稱為 "聯接表/中間表",該表將多對多關係劃分為兩個一對多關係,將這兩個表的主鍵都插入到第三個表中,從而建立關係。這個 "多" 在 "中間表" 中體現。

4.自我引用

  • 可用於存儲數據結構為樹形結構的數據,例如:戶籍中父子關係,公司中部門關係等...

建表原則:在表中創建一個 "自我引入" 欄位引用表中其他數據的主鍵,建立關係。

前言

常見的 MySQL 安裝共有五種方式,分別是:

  1. 軟體倉庫(yum 或 apt)安裝。

  2. rpm 或 deb 文件安裝。

  3. 通用二進位文件安裝。

  4. Docker 安裝。

如有需要使用 "Docker" 安裝 MySQL 的話,請參閱:https://hub.docker.com/r/mysql/mysql-server/

  1. 源代碼編譯(定製化)。

如有需要 "定製化" 或 "自主擴展" MySQL 的話,請參閱:https://dev.mysql.com/doc/refman/8.0/en/source-installation.html

說明:本文章中只介紹 "通用二進位文件安裝" 以及 "rpm 文件安裝",這兩種方式安裝。

二,Linux中卸載MySQL資料庫

說明:第一次安裝請略過!

1.檢查是否安裝 MySQL

使用一下命令查看當前安裝MySQL的情況,是否安裝了 MySQL

rpm -qa|grep -i mysql

顯示一下內容說明安裝了:

MySQL-client-5.5.25a-1.rhel5
MySQL-server-5.5.25a-1.rhel5
...

停止MySQL服務,刪除卸載安裝的 MySQL。命令:rpm -e –-nodeps 包名

rpm -ev MySQL-client-5.5.25a-1.rhel5
rpm -ev MySQL-server-5.5.25a-1.rhel5

2.查找MySQL的目錄

查找 MySQL 目錄(提示:現在很多都是使用編譯的 MySQL 安裝包進行安裝的,所以查找文件是必須的

find / -name mysql

具體要根據個人的情況,刪除對應的 mysql 目錄(註意:寧可不刪,不可亂刪!)。

註意:/etc/my.cnf 不會刪除,需要進行手工刪除

rm -rf /etc/my.cnf

3.檢查是否卸載成功

再次查找機器是否安裝 MySQL(註意:再次檢查文件是必須的

  • 檢查安裝情況
rpm -qa|grep -i mysql
  • 檢查 MySQL 配置文件情況
find / -name /etc/my.cnf

無結果說明卸載(刪除)成功!

三,Linux下安裝MySQL資料庫 - 二進位文件

  • 基本介紹:
    本次是在Linux下安裝MySQL資料庫。無需編譯安裝,解壓後初始化即可使用。
    本次演示的MySQL版本為: MySQL Community Server 8.0.20

1.查看環境信息

  • 查看 linux 內核版本的命令:
uname -a

uname 命令選項:

  • -a 或 --all:顯示所有信息;
  • -n 或 --nodename:只列印對外主機名;
  • -r 或 --release:只列印內核版本;(下載文件時能用到)
  • -p 或 --processor:列印系統架構,比如X86_64;
  • -o 或 --operating-system:列印操作系統名稱;

本文章是:GNU/Linux 的 x86_64 位操作系統。

  • 查看Linux操作系統版本的命令:
# 查看Linux系統版本的命令
lsb_release -a
# 或者
cat /etc/redhat-release

本文章使用的是:CentOS Linux release 7.6.1810 (Core) 操作系統版本

擴展 - Redhat系的Linux系統請使用:

cat /etc/issue

2.下載 MySQL

打開官方下載地址:https://downloads.MySQL.com/archives/community/ 或者 https://dev.mysql.com/downloads/MySQL/ 根據自己對應是系統,以及版本進行選擇,這裡演示的是Linux系統的安裝 MySQL 8.0.20(本文章是:GNU/Linux 的 x86_64 位操作系統)。

  • 直接點擊下麵的 Download 即可下載,下載完成將文件上傳到Linux。

  • 當然也可以在Linux系統中用 wget 方式進行下載:

wget https://cdn.MySQL.com/archives/MySQL-8.0/MySQL-8.0.20-linux-glibc2.12-x86_64.tar.xz

3.上傳安裝包並解壓

  • 創建安裝文件夾
mkdir -p /usr/local/mysql
  • 將 MySQL 安裝文件上傳到 "/usr/local/mysql" 文件夾下,並解壓:

註意:從 MySQL 8.0 開始下載的安裝包是 ".xz" 結尾的了,需要先使用 xz 命令處理

xz -d mysql-8.0.20-linux-glibc2.12-x86_64.tar.xz

解壓 tar壓縮包 命令:

tar -xvf mysql-8.0.20-linux-glibc2.12-x86_64.tar
  • 文件解壓後重命名(提示:該步驟根據個人習慣)
mv mysql-8.0.20-linux-glibc2.12-x86_64 mysql
  • 看一下現在的 MySQL 安裝文件的名稱和所在路徑。
pwd

名稱:"mysql",安裝路徑:"/usr/local/mysql"。這些信息很重要哦!

4.安裝前準備

  • 檢查 libaio 庫是否安裝。

說明:MySQL 依賴 libaio 庫,如果未在本地安裝此庫,則資料庫初始化和後續的伺服器啟動步驟將會失敗

如果未安裝,在初始化時可能遇到下麵的報錯:

./mysqld: error while loading shared libraries: libaio.so.1: cannot open shared object file: No such file or directoryx

libaio 檢查命令:

whereis libaio.so.1

出現以上結果說明 libaio 庫已經安裝。

如果沒有找到 "libaio.so.1" 文件,就要手動安裝 libaio 庫。

方式1:yum 安裝。

yum install -y libaio

註意:此時,使用 yum 命令安裝,電腦網路必須保證是正常的

方式2:離線安裝。

下載地址:https://centos.pkgs.org/7/centos-x86_64/libaio-0.3.109-13.el7.i686.rpm.html 網站或鏡像地址 http://mirror.centos.org/centos-7/7/os/x86_64/Packages/。

將安裝包上傳到伺服器執行以下命令安裝。

rpm -ivh libaio-0.3.109-13.el7.i686.rpm

安裝之後請再次執行 "whereis libaio.so.1" 命令再次檢查是否安裝成功。

  • 檢查 和 卸載系統自帶的 Mariadb
rpm -qa|grep mariadb

出現以上結果說明系統中安裝了 mariadb。

# 強制卸載 mariadb
rpm -e --nodeps mariadb-libs-5.5.60-1.el7_5.x86_64

卸載之後請再次執行 "rpm -qa|grep mariadb" 檢查是否卸載成功。

  • 創建 mysql 組 及 mysql 用戶,並授權。
  • 創建 mysql 組命令。
groupadd mysql
  • 創建 mysql 用戶以及加入到 mysql 組中。
useradd -r -g mysql mysql

說明:所有的文件和目錄都應該在 mysql 用戶下(擴展:useradd 中的 "-r" 表示建立為系統帳號)。

  • 創建 "數據" 存放目錄並授權(設置擁有者為 mysql)
mkdir -p /usr/local/mysql/data

  • 為 mysql 用戶授於 "數據目錄(/usr/local/mysql/data)" 許可權:
chown -R mysql:mysql /usr/local/mysql/data
  • 為 mysql 用戶授於 "MySQL 安裝目錄(/usr/local/mysql/mysql)" 許可權:
chown -R mysql:mysql /usr/local/mysql/mysql
  • 配置 "my.cnf" 文件

說明:"my.cnf" 文件是 MySQL 的預設配置文件,位於 "/etc/my.cnf"

vi /etc/my.cnf

打開 "my.cnf" 文件將下麵配置粘貼進去。

[mysqld]
bind-address=0.0.0.0
port=3306
user=mysql
basedir=/usr/local/mysql/mysql #指定的是MySQL安裝目錄
datadir=/usr/local/mysql/data #指定的是MySQL數據目錄
socket=/tmp/mysql.sock # MySQL 的socket文件
log-error=/usr/local/mysql/data/mysql.err #錯誤日誌存放文件
pid-file=/usr/local/mysql/data/mysql.pid # MySQL 服務進程的pid文件
#skip_ssl #關閉SSL加密連接
character_set_server=utf8mb4 # 設置全局的字元集類型
symbolic-links=0 # 開啟數據軟連接
explicit_defaults_for_timestamp=true
lower_case_table_names=1 # 設置表名大小不敏感。(MySQL在windows下,預設是對錶名大小寫不敏感的,但是在Linux下是大小寫敏感的)
# 修改使用 "mysql_native_password"(之前的密碼認證插件)插件作為認證加密方式
# default_authentication_plugin=mysql_native_password # MySQL8.0 預設認證加密方式為 "caching_sha2_password"
#skip-grant-tables #免密碼登陸,註意這時候是沒有埠的
  • basedir:指定的是 MySQL 的 "安裝目錄"。

  • datadir:指定的是 MySQL 的 "數據目錄"。

  • socket:MySQL 的socket文件(註意:建議指向"/tmp/mysql.sock",不然的話可能會在連接 MySQL 時會出現錯誤!)。

錯誤信息:

Can't connect to local MySQL server through socket '/tmp/mysql.sock' (2
  • skip_ssl : 關閉 SSL 加密連接。
  • character_set_server=utf8mb4:設置全局的字元集類型。
  • lower_case_table_names=1:設置表名大小不敏感(MySQL在windows下,預設是對錶名大小寫不敏感的,但是在Linux下是大小寫敏感的)。
  • skip-grant-tables :免密碼登陸 。註意:設置免密碼選項後,這時候的 MySQL 服務沒有埠(0),除本機外其他客戶端無法連接
# MySQL8.0 預設認證加密方式為 "caching_sha2_password" ,為了和之前的版本匹配,需要修改為 "mysql_native_password" 插件作為認證加密方式
default_authentication_plugin=mysql_native_password 

5.初始化資料庫

  • 進入MySQL 安裝目錄中的 bin目錄下:
cd /usr/local/mysql/mysql/bin
  • 執行初始化 MySQL 命令:
./mysqld --defaults-file=/etc/my.cnf --initialize
  • --defaults-file:表示初始化時收使用的配置文件

特別註意:在初始化和啟動 MySQL 的命令中,指定的 "系統變數" 的優先順序是大於 "my.cnf" 文件的。個人建議:my.cnf 配置文件中有的 "系統變數" 就不要在初始化時指定了。

  • 將啟動腳本 "mysql.server" 複製為 "/etc/init.d/mysql"
cp /usr/local/mysql/mysql/support-files/mysql.server /etc/init.d/mysql
  • 為 MySQL 配置 PATH 環境變數(執行 MySQL 等命令時不需要帶路徑)
  1. 打開環境變數 "/root/.bash_profile" 文件:
vi /root/.bash_profile
  1. 添加 MySQL 的環境變數:
:/usr/local/mysql/mysql/bin # MySQL的 "安裝目錄/bin" 添加到 PATH 之後,說明這裡已":"號為分隔符
  1. 刷新配置文件,使配置生效:
source /root/.bash_profile

6.啟動和停止 MySQL

  • 啟動 MySQL,並查看 MySQL 服務狀態。
service mysql start
# 或者
systemctl start mysql

  • 查詢 MySQL 伺服器的狀態:
service mysql status
# 或者
systemctl status mysql

  • 查詢 MySQL 服務狀態命令
ps -ef|grep mysql
  • 擴展命令 - 埠(3306)信息查詢命令:
lsof -i:3306
  • 停止 MySQL 服務:
service mysql stop
# 或者
systemctl stop mysql

7.登錄 MySQL 並修改密碼

  • 查看初始化時生成的密碼(說明:在 "錯誤日誌" 中,就是 log-error 參數指向的文件,如果不指定 log-error 選項,預設為 "數據目錄"/主機名稱.err)。
more /usr/local/mysql/data/mysql.err | grep "A temporary password"

  • 進入 MySQL 安裝目錄中的bin目錄下:
cd /usr/local/mysql/mysql/bin
  • 執行 mysql 命令登錄到 MySQL 資料庫,密碼為初始化資料庫時的密碼。
./mysql -u root -p

  • 修改 root 密碼
alter user 'root'@'localhost' identified with mysql_native_password by 'supconit-mysql';

擴展 - 常見修改用戶信息的方式:

  • 使用 "set password for" 修改用戶密碼:
set password for 'root'@'localhost' = 'supconit-mysql';
  • 使用 "alter user" 修改當前用戶的密碼:
alter user user() identified by 'supconit-mysql';
  • 使用 "update" 修改用戶的ip訪問許可權:
update mysql.user set host = '%' where user = 'root' and host = 'localhost';

註意:使用 DML 語句修改用戶密碼,必須執行 "刷新許可權" 命令也能生效

flush privileges;
  • 使用(navicat等工具)遠程登錄登錄

navicat下載:鏈接:https://pan.baidu.com/s/1aknIUwy2L1Ws2uYL88COng 提取碼:og7l

特別註意:在使用遠程工具遠程登錄時連接不上。這時就有可能是伺服器的防火牆沒有關閉導致的!

  • 關閉防火牆
service firewalld stop
# 或者
systemctl stop firewalld

查看伺服器的防火牆狀態命令:

service firewalld status
# 或者
systemctl status firewalld
  • 防火牆開啟時的狀態:

說明:Active: active (running) "活動(正在運行)的"。

  • 防火牆關閉時的狀態:

說明:Active: inactive (dead) "不活動(死)的"。

擴展 - 開啟防火牆的命令:

service firewalld start
# 或者
systemctl start firewalld
  • 再次登錄(使用遠程工具)

8.遇到的問題

  • 問題1 - 初始化時錯誤:--initialize specified but the data directory has files in it. Aborting.

原因分析:指定的 "數據目錄" 下有文件(即 datadir 選項指向的目錄中有文件)

解決辦法:

方式1:刪除 "數據目錄" 下的所有文件。

方式2:重新創建一個新的 "數據目錄",將 datadir 選項指向新的 "數據目錄"。

  • 問題2 - 初始化時提示:log-error set to '/var/log/mariadb/mariadb.log', however file don't exists. Create writable for user 'mysql'.

原因分析:沒有找到指定的日誌文件(即:沒有找到 /var/log/mariadb/mariadb.log 文件)
解決辦法:創建文件夾和文件,然後給 mysql 用戶授權。

mkdir /var/log/mariadb
touch /var/log/mariadb/mariadb.log
chown -R mysql:mysql  /var/log/mariadb/
  • 問題3 - MySQL 啟動時錯誤:ERROR! The server quit without updating PID file (/data/mysql/localhost.localdomain.pid).

原因分析:沒有找到指定的 "*.pid" 文件(即沒有找到 /data/mysql/localhost.localdomain.pid 文件)

百度了一下這個文件的作用:

localhost.localdomain.pid 文件中保存的是 MySQL 服務進程的 pid,如果這個文件丟了或者啟動時沒有找到,就會啟動失敗。可以創建一個新的,然後放入一些數字。

註意:不建議將此文件放到 /tmp 目錄下

解決辦法:在指定的文件夾下創建 localhost.localdomain.pid 文件,然後把 MySQL 的服務進程的 pid 寫入到該文件中。

  1. 查詢 MySQL 服務進程的 pid 。
ps -ef |grep mysql
  1. 在指定的文件夾下創建文件。
vi /data/mysql/localhost.localdomain.pid

註意:新創建的文件不能保存一個空文件,需要在裡面輸入一些數字

~ MySQL 問題的解決思路

當 MySQL 啟動不了,以及在日常的使用中出現了錯誤,一定要學會看 MySQL 錯誤日誌。畢竟每個人所遇的情況不一定都是一樣的,造成 MySQL 啟動不了和錯誤的原因是真的很多。錯誤日誌路徑:my.cnf (Windows是my.ini)文件中的 log-error 選擇所指向的文件

如果配置文件中未指定該選項,則 Windows 系統下 MySQL 錯誤日誌預設路徑為:"數據目錄/你的主機名稱.err", Linux 系統下錯誤日誌預設路徑為:"/var/log/mysqld.log"

SQL 命令查找方法:

show variables like 'log_error';

肉還是別人家的香 - MySQL 通用二進位文件安裝網上參考資料:https://blog.csdn.net/qq_37598011/article/details/93489404

四,Linux下安裝MySQL資料庫 - rpm 文件

基本介紹:
本次是在Linux下安裝MySQL資料庫。rpm 安裝包安裝。
本次演示的MySQL版本為: MySQL Community Server 8.0.20

1.查看環境信息

  • 查看 linux 內核版本的命令:
uname -a

uname 命令選項:

  • -a 或 --all:顯示所有信息;
  • -n 或 --nodename:只列印對外主機名;
  • -r 或 --release:只列印內核版本;(下載文件時能用到)
  • -p 或 --processor:列印系統架構,比如X86_64;
  • -o 或 --operating-system:列印操作系統名稱;

本文章是:GNU/Linux 的 x86_64 位操作系統。

  • 查看Linux操作系統版本的命令:
# 查看Linux系統版本的命令
lsb_release -a
# 或者
cat /etc/redhat-release

本文章使用的是:CentOS Linux release 7.6.1810 (Core) 操作系統版本

擴展 - Redhat系的Linux系統請使用:

cat /etc/issue

2.需要安裝基礎工具

如果你的伺服器可以連接外網,並且 yum 可以正常使用,直接運行下麵一條命令即可。

yum install -y net-tools perl libaio openssl gcc pcre-devel zlib-devel openssl vim openssl-devel

那如果你非常的不幸,要網沒網 yum 庫還中用的話!祝你好運!所有 rpm 安裝包都有的網址:https://pkgs.org/ 直接在頁面上搜索即可得到你想要的安裝包

  • 檢查 - 安裝 gcc 工具庫:
gcc -v

註意:如果你的電腦上沒有 gcc 的話,就需要安裝一個。否則 MySQL 肯定會安裝失敗!

知識擴展:

根據MySQL官網的資料:https://dev.MySQL.com/doc/refman/8.0/en/source-installation-prerequisites.html

從MySQL 8.0.27開始,MySQL 8.0源代碼允許使用C++17功能。若要在所有受支持的平臺上啟用良好的 C++17 支持級別,Linux環境gcc版本最好在7.1以上,所以先升級gcc版本(gcc7.5.0)。

  • 知識擴展 -升級 gcc 版本:

說明:不升級也不會影響 MySQL 安裝。以下安裝方式是使用源碼安裝,解壓後需要 "編譯"-"安裝"

下載需要的 gcc 版本 :下載網址:http://ftp.gnu.org/gnu/gcc/

上傳 gcc-7.5.0.tar.xz 到伺服器的 "/usr/local/gcc" 下。

mkdir /usr/local/gcc

進入目錄 "/usr/local/gcc" 解壓 gcc-7.5.0.tar.xz。

xz -d gcc-7.5.0.tar.xz
tar -xvf gcc-7.5.0.tar

進入解壓目錄 /gcc-7.5.0,下載依賴(自動下載依賴)。註意:此時,電腦網路必須保證是正常的

cd gcc-7.5.0
./contrib/download_prerequisites

建立文件夾 build,併進入配置,生成 Makefile 文件即安裝配置文件

mkdir /usr/local/gcc/gcc-7.5.0/build
cd /usr/local/gcc/gcc-7.5.0/build
./configure --enable-checking=release --enable-languages=c,c++ --disable-multilib

編譯安裝

make & make install

刪除老版本,為新版本創建軟鏈接

rm -rf /usr/bin/gcc
rm -rf /usr/bin/g++
rm -rf /usr/lib64/libstdc++.so.6

創建文件夾映射鏈接 -- 註意這裡要按你們自己的配置來

ln -sf /usr/local/bin/gcc /usr/bin/gcc
ln -sf /usr/local/bin/g++ /usr/bin/g++

動態庫軟鏈接

ln -sf /usr/local/lib64/libstdc++.so.6 /usr/lib64/libstdc++.so.6
ln -sf /usr/local/include/c++/7.5.0 /usr/include/c++/7.5.0

註意:文件鏈接的設置根據實際的情況配置

重啟伺服器,再次查看gcc版本

reboot
gcc -v
  • 檢查 - 安裝 openssl-devel 工具庫:
openssl version

可以看到是有的,並且系統自帶的版本是 openssl-1.0.2k。

註意:如果你的電腦上沒有 openssl-devel 的話,就需要安裝一個。否則可能會導致 MySQL 安裝失敗!

  • 安裝 openssl 說明:

說明:以下安裝方式是使用源碼安裝,解壓後需要 "編譯"-"安裝"

  • 方式一: 使用 yum 安裝
yum install openssl openssl-devel

註意:該方式必須保證 yum 命令正常(有外網)的情況下使用

  • 方式二:下載安裝包安裝(離線安裝)

說明:以下安裝方式是使用源碼安裝,解壓後需要 "編譯"-"安裝"

下載需要的 ncurses 版本,下載地址:https://www.openssl.org/source/old/

上傳 ncurses-5.9.tar.gz 到伺服器的 "/usr/local/openssl" 下

mkdir /usr/local/openssl

進入目錄 "/usr/local/openssl" 解壓 openssl-1.1.1.tar.gz

tar -zxvf openssl-1.1.1.tar.gz

進入解壓目錄 openssl-1.1.1(完整路徑為:/usr/local/openssl/openssl-1.1.1)

cd openssl-1.1.1/

根據系統環境製作安裝配置文件

./config --prefix=/usr/local/openssl

安裝配置文件

./config -t

編譯安裝

make & make install
  • 知識擴展 -升級 openssl 版本:

備份舊版本:

mv /usr/bin/openssl /usr/bin/openssl.bak
mv /usr/include/openssl /usr/include/openssl.bak

建立新版本的軟鏈接:

# 命令目錄軟鏈接
ln -s /usr/local/openssl/bin/openssl /usr/bin/openssl
ln -s /usr/local/openssl/include/openssl /usr/include/openssl
# 動態庫軟鏈接
ln -s /usr/local/openssl/lib/libssl.so.1.1 /usr/lib64/libssl.so.1.1
ln -s /usr/local/openssl/lib/libcrypto.so.1.1 /usr/lib64/libcrypto.so.1.1

將 openssl 的 lib 目錄追加到 "ld.so.conf" 文件中

echo "/usr/local/openssl/lib" >> /etc/ld.so.conf

刷新動態鏈接庫:

ldconfig -v

說明:如需使用新版本,則需替換原來的軟鏈接指向,即替換原動態庫,進行版本升級

  • 檢查 - 安裝 cmake 工具庫:
cmake -version

可以看到是有的,並且系統自帶的版本是 2.0.12.2 的。

  • 安裝 cmake 說明(離線安裝):

說明:以下安裝方式是使用源碼安裝,解壓後需要 "編譯"-"安裝"

gcc 等必備程式包,如果沒有 gcc 請先安裝 gcc 等程式包。

yum install -y gcc gcc-c++ make automake

註意:該方式必須保證 yum 命令正常(有外網)的情況下使用

獲取 cmake 源碼包(下載需要的版本)

下載需要的 cmake 版本,下載地址:https://cmake.org/files/ 或者 https://cmake.org/download/

上傳 cmake-2.8.10.2.tar.gz 到伺服器的 "/usr/local/cmake" 下。

mkdir /usr/local/cmake

進入目錄 "/usr/local/cmake" 解壓 cmake-2.8.10.2.tar.gz

cd /usr/local/cmake
tar -zxvf cmake-2.8.10.2.tar.gz

進入解壓目錄 cmake-2.8.10.2(完整路徑為:/usr/local/cmake/cmake-2.8.10.2),運行 "bootstrap" 或者 "configure" 文件。

cd cmake-2.8.10.2/

安裝配置文件

./bootstrap
# 或者
./configure

編譯安裝(這步時間有點長)

gmak & gmake install

再次查看 cmake 版本

cmake -version

  • 知識擴展 -升級 cmake 版本:

說明:以下安裝方式是使用通用 "二進位文件安裝",解壓即用

下載需要的 cmake 版本,下載地址:https://cmake.org/files/ 或者 https://cmake.org/download/

上傳 cmake-3.15.5-Linux-x86_64.tar.gz 到伺服器的 "/usr/local/cmake" 下

mkdir /usr/local/cmake

進入目錄(/usr/local/cmake)解壓 cmake-3.15.5-Linux-x86_64.tar.gz

tar -zxvf cmake-3.15.5-Linux-x86_64.tar.gz

刪除老版本,為新版本的文件鏈接:

# 刪除老的 cmake 
rm -rf /usr/bin/cmake
# 通過建立鏈接 -替換 cmake
ln -s /usr/local/cmake/bin/cmake /usr/bin/cmake

再次查看 cmake 版本

cmake -version
  • 檢查 - 安裝 ncuress-devel 工具庫:

**查看電腦上是否安裝了 ncurses **

rpm -qa | grep ncurses

註意:如果你的電腦上沒有 ncuress-devel 的話,就需要安裝一個。否則可能會導致 MySQL 安裝失敗!

ncuress-devel 安裝說明:

  • 方式一: 使用 yum 安裝
yum install ncurses-devel

註意:該方式必須保證 yum 命令正常(有外網)的情況下使用

  • 方式二:下載 rpm 包安裝 ncuress-devel(離線安裝)

下載需要的 ncurses-devel 版本,下載地址:https://pkgs.org/download/ncurses 或者 http://mirror.centos.org/centos/7/os/x86_64/Packages/ncurses-devel-5.9-14.20130511.el7_4.x86_64.rpm

將 ncurses-devel 的安裝包上傳到伺服器

安裝命令:

rpm -ivh ncurses-devel-5.9-14.20130511.el7_4.x86_64.rpm
  • 方式三:下載安裝包安裝(離線安裝)

說明:以下安裝方式是使用源碼安裝,解壓後需要 "編譯"-"安裝"

下載需要的 ncurses 版本,下載地址:https://ftp.gnu.org/gnu/ncurses/

上傳 ncurses-5.9.tar.gz 到伺服器的 "/usr/local/ncurses" 下

mkdir /usr/local/ncurses

進入目錄 "/usr/local/ncurses" 解壓 ncurses-5.9.tar.gz

tar -zxvf ncurses-5.9.tar.gz

進入解壓目錄 /ncurses-6.1(完整路徑為:/usr/local/ncurses/ncurses-5.9)

cd ncurses-5.9/

安裝配置文件

./configure

編譯

make

安裝

make install

**看到界面最後輸出:表示 ncurses-devel 依賴就裝好了。 **

installing ./cursesapp.h in /home/wlf/ncurses/include/ncurses
installing ./cursesf.h in /home/wlf/ncurses/include/ncurses
installing ./cursesm.h in /home/wlf/ncurses/include/ncurses
installing ./cursesp.h in /home/wlf/ncurses/include/ncurses
installing ./cursesw.h in /home/wlf/ncurses/include/ncurses
installing ./cursslk.h in /home/wlf/ncurses/include/ncurses
installing etip.h in /home/wlf/ncurses/include/ncurses
make[1]: Leaving directory `/home/wlf/ncurses-5.9/c++'

3.下載 MySQL

打開官方下載地址:https://downloads.MySQL.com/archives/community/ 或者 https://dev.MySQL.com/downloads/MySQL/,根據自己對應是系統,以及版本進行選擇,這裡演示的是Linux系統的安裝 MySQL 8.0.20(本文章是:GNU/Linux 的 x86_64 位操作系統)。

4.上傳安裝包並解壓

  • 創建文件夾,將文件上傳到 "/usr/local/mysql" 文件夾下。
mkdir /usr/local/mysql
  • 進入目錄 "/usr/local/mysql" 解壓安裝包。
tar -xvf mysql-8.0.20-1.el7.x86_64.rpm-bundle.tar

5.進行安裝

千萬註意:在安裝 MySQL 時一定要按照順序安裝。否則會安裝失敗。

安裝順序:

  1. mysql-community-common-xxx-xx.rpm
  2. mysql-community-test-xxx-xx.rpm
  3. mysql-community-libs-xxx-xx.rpm
  4. mysql-community-client-xxx-xx.rpm
  5. mysql-community-server-xxx-xx.rpm
  6. mysql-community-devel-xxx-xx.rpm

安裝命令語法如下:

rpm -ivh mysql-xxx.rpm --nodeps
  • 安裝 mysql-community-common- xx...
rpm -ivh mysql-community-common-8.0.20-1.el7.x86_64.rpm --nodeps

警告:MySQL-community-common-8.0.20-1.el7.x86_64.rpm: 頭V3 DSA/SHA1 Signature, 密鑰 ID 5072e1f5: NOKEY
準備中... ################################# [100%]
正在升級/安裝...
1:MySQL-community-common-8.0.20-1.e################################# [100%]

  • 安裝 mysql-community-test- xx...
rpm -ivh mysql-community-test-8.0.20-1.el7.x86_64.rpm --force --nodeps

警告:mysql-community-test-8.0.20-1.el7.x86_64.rpm: 頭V3 DSA/SHA1 Signature, 密鑰 ID 5072e1f5: NOKEY
準備中... ################################# [100%]
正在升級/安裝...
1:mysql-community-test-8.0.20-1.el7################################# [100%]

  • 安裝 MySQL-community-libs- xx...
rpm -ivh mysql-community-libs-8.0.20-1.el7.x86_64.rpm --force --nodeps

警告:mysql-community-libs-8.0.20-1.el7.x86_64.rpm: 頭V3 DSA/SHA1 Signature, 密鑰 ID 5072e1f5: NOKEY
準備中... ################################# [100%]
正在升級/安裝...
1:mysql-community-libs-8.0.20-1.el7################################# [100%]

  • 安裝 mysql-community-client- xx...
rpm -ivh mysql-community-client-8.0.20-1.el7.x86_64.rpm --force --nodeps

警告:mysql-community-client-8.0.20-1.el7.x86_64.rpm: 頭V3 DSA/SHA1 Signature, 密鑰 ID 5072e1f5: NOKEY
準備中... ################################# [100%]
正在升級/安裝...
1:mysql-community-client-8.0.20-1.e################################# [100%]

  • 安裝 mysql-community-server- xx...
rpm -ivh mysql-community-server-8.0.20-1.el7.x86_64.rpm --force --nodeps

警告:mysql-community-server-8.0.20-1.el7.x86_64.rpm: 頭V3 DSA/SHA1 Signature, 密鑰 ID 5072e1f5: NOKEY
準備中... ################################# [100%]
正在升級/安裝...
1:mysql-community-server-8.0.20-1.e################################# [100%]

  • 安裝 mysql-community-devel- xx...
rpm -ivh mysql-community-devel-8.0.20-1.el7.x86_64.rpm --force --nodeps

警告:mysql-community-devel-8.0.20-1.el7.x86_64.rpm: 頭V3 DSA/SHA1 Signature, 密鑰 ID 5072e1f5: NOKEY
準備中... ################################# [100%]
正在升級/安裝...
1:mysql-community-devel-8.0.20-1.el################################# [100%]

安裝時可能出現的問題:

[root@xxxxxx MySQL]# rpm -ivh MySQL-community-test-8.0.20-1.el7.x86_64.rpm --nodeps
警告:MySQL-community-test-8.0.20-1.el7.x86_64.rpm: 頭V3 DSA/SHA1 Signature, 密鑰 ID 5072e1f5: NOKEY
準備中...                          ################################# [100%]
file /usr/bin/mysqld_safe from install of MySQL-community-test-8.0.20-1.el7.x86_64 conflicts with file from package mariadb-server-1:5.5.60-1.el7_5.x86_64
​        file /usr/bin/MySQLtest from install of ......
​        ......

錯誤說明:mysql-community-test-8.0.20-1.el7.x86_64安裝的文件/usr/bin/mysql_safe與軟體包 mariab-server-1:5.5.60-1.el7_5.x 中的文件衝突

問題原因:我們安裝的 MySQL 和 mariab-server 發生了衝突。

解決方式:我選擇的是方式一

  • 方式一:在安裝的命令後面加上 --force --nodeps(強制安裝)。
  • 方式二:卸載引起衝突的軟體(文件:mariab-server)。

6.啟動和停止 MySQL

  • 啟動 MySQL,並查看 MySQL 服務狀態。 (註意:使用安裝包安裝 MySQL 的話,預設的服務名稱為:mysqld
service mysqld start
# 或者
systemctl start mysqld
  • 查詢 MySQL 伺服器的狀態:
service mysqld status
# 或者
systemctl status mysqld
  • MySQL 服務開啟時的狀態:

說明:Active: active (running) "活動(正在運行)的",Main PID: 39490(mysqld):表示 MySQL 占用的進程id。

  • MySQL 服務關閉時的狀態:

說明:Active: inactive (dead) "不活動(死)的",Main PID: 39490(mysqld):表示 MySQL 占用的進程id。

  • 擴展命令 - 查詢 MySQL 服務狀態命令:
ps -ef|grep mysqld

  • 擴展命令 - 埠(3306)信息查詢命令:
lsof -i:3306
  • 停止 MySQL 服務:
service mysqld stop
# 或者
systemctl stop mysqld

7.登錄 MySQL 並修改密碼

  • 查看臨時密碼(說明:在 "錯誤日誌" 中,預設為:"/var/log/mysqld.log"
more /var/log/mysqld.log | grep "A temporary password"

  • 登錄 MySQL
mysql -uroot -p

登錄成功!

  • 修改密碼策略

說明:mysql 8.0 的預設密碼策略要求是比較嚴苛的,所以這裡需要修改 "密碼策略"。如果不修改的話,密碼設置的過於簡單的話,會出現錯誤 錯誤1819(HY000)密碼不符合當前策略要求 的錯誤。

# 修改密碼複雜級別
set global validate_password.policy=0;
# 修改密碼長度
set global validate_password.length=1;

註意:以上兩個系統變數 8.0 後做了變動,變數名不同了。(validate_password_policy 和 validate_password.policy )

  • MySQL 8.0 版本之前使用 validate_password_policy 和 validate_password_length。
  • MySQL 8.0 版本之後使用 validate_password.policy 和 validate_password.length。
  • 修改 root 密碼
alter user 'root'@'localhost' identified with mysql_native_password by 'supconit-mysql';

擴展 - 常見修改用戶信息的方式:

  • 使用 "set password for" 修改用戶密碼:
set password for 'root'@'localhost' = 'supconit-mysql';
  • 使用 "alter user" 修改當前用戶的密碼:
alter user user() identified by 'supconit-mysql';
  • 使用 "update" 修改用戶的ip訪問許可權:
update mysql.user set host = '%' where user = 'root' and host = 'localhost';

註意:使用 DML 語句修改用戶密碼,必須執行 "刷新許可權" 命令也能生效

flush privileges;
  • 使用(navicat等工具)遠程登錄登錄

navicat下載:鏈接:https://pan.baidu.com/s/1aknIUwy2L1Ws2uYL88COng 提取碼:og7l

特別註意:在使用遠程工具遠程登錄時連接不上。這時就有可能是伺服器的防火牆沒有關閉導致的!

  • 關閉防火牆
service firewalld stop
# 或者
systemctl stop firewalld

查看伺服器的防火牆狀態命令:

service firewalld status
# 或者
systemctl status firewalld
  • 防火牆開啟時的狀態:

說明:Active: active (running) "活動(正在運行)的"。

  • 防火牆關閉時的狀態:

說明:Active: inactive (dead) "不活動(死

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

-Advertisement-
Play Games
更多相關文章
  • Go語言中的上下文(Context)是一種用於在 Goroutines 之間傳遞取消信號、截止時間和其他請求範圍值的標準方式。context 包提供了 Context 類型和一些相關的函數,用於在併發程式中有效地傳遞上下文信息。 在Go語言中,上下文通常用於以下場景: 請求的傳遞:當一個請求從客戶端 ...
  • wmproxy wmproxy已用Rust實現http/https代理, socks5代理, 反向代理, 靜態文件伺服器,四層TCP/UDP轉發,內網穿透,後續將實現websocket代理等,會將實現過程分享出來,感興趣的可以一起造個輪子 項目地址 國內: https://gitee.com/tic ...
  • 引言 上一篇中 WPF 重寫DataGrid樣式,因新產品UI需要,重寫了一下微軟 WPF 原生的 DataGrid 的樣式,包含如下內容: 基礎設置,一些基本背景色,字體顏色等。 滾動條樣式。 實現圓角表格,重寫表格的一些基礎樣式,例如 CellStyle ,RowStyle,RowHeaderS ...
  • 什麼是主構造函數 把參數添加到class與record的類聲明中就是主構造函數。例如 class Person(string name) { private string _name = name; } 這種寫法與以下代碼寫法一樣 class Person { private string _nam ...
  • 背景 工作需要對接內部的日誌中台,對日誌列印有固定的格式要求,為了使Nginx的access日誌也能被採集,需要對日誌格式進行自定義,要求日誌格式為: yyyy-MM-dd HH:mm:ss.SSS LOG_LEVEL LOG_MSG > 時間格式+列印級別+業務日誌 如: 23-11-18 17: ...
  • 作為小白的我這幾天買了個香橙派3b 經過這幾天的折騰,終於進入了ssh終端(大喜 我買的是官店的8G,創客價299,連著一起買了一個閃迪的64gTF卡 簡單總結一下搭建過程: 物理準備:一臺電腦,香橙派與一張16G以上的tf卡,tf讀卡器(一般會送)一根網線,type-c線 第一步:燒錄ubuntu ...
  • CycloneIII內部資源概述 目錄CycloneIII內部資源概述Logic Elements and Logic Array Blocks(邏輯元件和邏輯陣列塊)LELABLAB InterconnectsMemory Blocks(記憶體塊)Memory modeClocking modeEm ...
  • DM8壓縮表 0、結論 行表(普通表)不支持壓縮。但是語法支持。建表之後,查詢到的占用空間會比普通表小一半。 經過測試,裝10萬數據(兩個欄位),壓縮的、未壓縮,占用空間一樣大。 列表(huge表)支持壓縮。可以壓縮表(就是壓縮所有列),也可以選擇壓縮列。但是建表的時候就要設置,否則建好表之後修改不 ...
一周排行
    -Advertisement-
    Play Games
  • 1、預覽地址:http://139.155.137.144:9012 2、qq群:801913255 一、前言 隨著網路的發展,企業對於信息系統數據的保密工作愈發重視,不同身份、角色對於數據的訪問許可權都應該大相徑庭。 列如 1、不同登錄人員對一個數據列表的可見度是不一樣的,如數據列、數據行、數據按鈕 ...
  • 前言 上一篇文章寫瞭如何使用RabbitMQ做個簡單的發送郵件項目,然後評論也是比較多,也是準備去學習一下如何確保RabbitMQ的消息可靠性,但是由於時間原因,先來說說設計模式中的簡單工廠模式吧! 在瞭解簡單工廠模式之前,我們要知道C#是一款面向對象的高級程式語言。它有3大特性,封裝、繼承、多態。 ...
  • Nodify學習 一:介紹與使用 - 可樂_加冰 - 博客園 (cnblogs.com) Nodify學習 二:添加節點 - 可樂_加冰 - 博客園 (cnblogs.com) 介紹 Nodify是一個WPF基於節點的編輯器控制項,其中包含一系列節點、連接和連接器組件,旨在簡化構建基於節點的工具的過程 ...
  • 創建一個webapi項目做測試使用。 創建新控制器,搭建一個基礎框架,包括獲取當天日期、wiki的請求地址等 創建一個Http請求幫助類以及方法,用於獲取指定URL的信息 使用http請求訪問指定url,先運行一下,看看返回的內容。內容如圖右邊所示,實際上是一個Json數據。我們主要解析 大事記 部 ...
  • 最近在不少自媒體上看到有關.NET與C#的資訊與評價,感覺大家對.NET與C#還是不太瞭解,尤其是對2016年6月發佈的跨平臺.NET Core 1.0,更是知之甚少。在考慮一番之後,還是決定寫點東西總結一下,也回顧一下.NET的發展歷史。 首先,你沒看錯,.NET是跨平臺的,可以在Windows、 ...
  • Nodify學習 一:介紹與使用 - 可樂_加冰 - 博客園 (cnblogs.com) Nodify學習 二:添加節點 - 可樂_加冰 - 博客園 (cnblogs.com) 添加節點(nodes) 通過上一篇我們已經創建好了編輯器實例現在我們為編輯器添加一個節點 添加model和viewmode ...
  • 前言 資料庫併發,數據審計和軟刪除一直是數據持久化方面的經典問題。早些時候,這些工作需要手寫複雜的SQL或者通過存儲過程和觸發器實現。手寫複雜SQL對軟體可維護性構成了相當大的挑戰,隨著SQL字數的變多,用到的嵌套和複雜語法增加,可讀性和可維護性的難度是幾何級暴漲。因此如何在實現功能的同時控制這些S ...
  • 類型檢查和轉換:當你需要檢查對象是否為特定類型,並且希望在同一時間內將其轉換為那個類型時,模式匹配提供了一種更簡潔的方式來完成這一任務,避免了使用傳統的as和is操作符後還需要進行額外的null檢查。 複雜條件邏輯:在處理複雜的條件邏輯時,特別是涉及到多個條件和類型的情況下,使用模式匹配可以使代碼更 ...
  • 在日常開發中,我們經常需要和文件打交道,特別是桌面開發,有時候就會需要載入大批量的文件,而且可能還會存在部分文件缺失的情況,那麼如何才能快速的判斷文件是否存在呢?如果處理不當的,且文件數量比較多的時候,可能會造成卡頓等情況,進而影響程式的使用體驗。今天就以一個簡單的小例子,簡述兩種不同的判斷文件是否... ...
  • 前言 資料庫併發,數據審計和軟刪除一直是數據持久化方面的經典問題。早些時候,這些工作需要手寫複雜的SQL或者通過存儲過程和觸發器實現。手寫複雜SQL對軟體可維護性構成了相當大的挑戰,隨著SQL字數的變多,用到的嵌套和複雜語法增加,可讀性和可維護性的難度是幾何級暴漲。因此如何在實現功能的同時控制這些S ...