1. 程式人生 > 其它 >CentOS7安裝MySQL,python3

CentOS7安裝MySQL,python3

寫在前面,後面所有的軟體包均放在/opt/software/下,安裝均在/opt/apps/下

1.安裝mysql8

1.1 資源

連結:https://pan.baidu.com/s/1csFQM-T_FATThGuw2rmOAA
提取碼:good

1.2 檢查虛擬機器是否有mariadb

CentOS7一般有一個自帶的MySQL體系的資料mariadb,需要先解除安裝了,順序執行下面命令

rpm -qa|grep mariadb
rpm -e --nodeps mariadb-libs-5.5.68-1.el7.x86_64
rpm -qa|grep mariadb

1.3下載mysql8並放入/opt/software/下,並開始搭建

# 解壓MySQL8安裝包
tar -zxvf mysql-8.0.21-el7-x86_64.tar.gz
# 更名並移動
mv mysql-8.0.21-el7-x86_64 mysql8
mv mysql8 /opt/apps/
# 進入mysql8目錄下,建立mysql8資料檔案存放目錄
cd /opt/apps/mysql8/
mkdir mysqldb
# 建立MySQL組和使用者
groupadd mysql
# 建立使用者(-s /bin/false引數指定mysql使用者僅擁有所有權,而沒有登入許可權)
useradd -r -g mysql -s /bin/false mysql
# 給mysql目錄及其子檔案新增使用者組和使用者
chown -R mysql:mysql ./
# 建立MySQL配置檔案
vi /etc/my.cnf
# 放入以下內容
# -------------------------------------
[mysqld]
# 設定3306埠
port=3306
# 設定mysql的安裝目錄
basedir=/opt/apps/mysql8
# 設定mysql資料庫的資料的存放目錄
datadir=/opt/apps/mysql8/mysqldb
# 允許最大連線數
max_connections=10000
# 允許連線失敗的次數。這是為了防止有人從該主機試圖攻擊資料庫系統
max_connect_errors=10
# 服務端使用的字符集預設為UTF8
character-set-server=utf8
# 建立新表時將使用的預設儲存引擎
default-storage-engine=INNODB
# 預設使用“mysql_native_password”外掛認證
default_authentication_plugin=mysql_native_password
[mysql]
# 設定mysql客戶端預設字符集
default-character-set=utf8
[client]
# 設定mysql客戶端連線服務端時預設使用的埠
port=3306
default-character-set=utf8
# -------------------------------------
# 安裝mysql
cd /opt/apps/mysql8/bin
./mysqld --initialize --console

1.4啟動mysql

cd /opt/apps//mysql8/support-files/
./mysql.server start

初次執行會報一個錯誤

我們不是專業的dba,在這裡我們就暴力點,直接給mysql8賦予所有的許可權就好了

chmod 777 /opt/apps/mysql8/
cd /opt/apps/mysql8/support-files
./mysql.server start


啟動成功

1.5登入MySQL並修改密碼

cd /opt/apps/mysql8/bin
./mysql -uroot -pu3&k=d+yw+1y

此時會報一個錯誤

ERROR 1045 (28000): Access denied for user 'root'@'localhost' (using password: YES)

我看了很多安裝部落格,安裝的時候都沒有提到,我每次安裝的時候都有,屬實是噁心到我了。在這裡搞一個通用的解決辦法。先開啟前面的my.cnf配置檔案,在[mysqld]下面加上一行skip-grant-tables,儲存,然後執行 /opt/apps/mysql8/support-files/mysql.server restart重啟MySQL伺服器,再次登入,只輸入登入名,輸入密碼的時候按下回車,一次不行就兩次,就綿密登陸進去了。
修改登陸密碼,

use mysql

說明:8.0版本不允許在跳過策略 skip-grant-tables 時修改密碼。

先清除root使用者密碼,刪除my.conf新增的 skip-grant-tables 後,通過空密碼正常訪問資料庫後,就可以修改密碼了。
補充:5.7/5.5 版本在此時就可以直接改一個新密碼了。

將密碼清空以後,輸入exit;退出MySQL,然後去配置檔案中刪除skip-grant-tables儲存,重啟mysql,再次輸入密碼進入,然後就可以修改密碼了。
重新進入mysql,輸入修改密碼操作,又會出現一個錯誤,我的耐心真的快被耗盡了。

ERROR 1820 (HY000): You must reset your password using ALTER USER statement before executing this statement.

此時輸入 set password='一個足夠複雜你又記得住的密碼';

記住,不要輸入一個太簡單的密碼,不然又會報一個錯誤。這個錯誤如下

ERROR 1819 (HY000): Your password does not satisfy the current policy requirements

如果你非要設定123456這種簡單密碼,按照如下操作
執行如下兩條語句:

set global validate_password.policy=0;
set global validate_password.length=1;

然後再執行set password='一個足夠複雜你又記得住的密碼';

1.6配置允許遠端登入

use mysql
update user set user.Host='%'where user.User='root';
flush privileges;
quit

在Windows上使用vscode連線mysql,博主我測試成功。