Centos7安裝和配置Mysql8
一、yum方式安裝
1.由于centOS7中默認(rèn)安裝了MariaDB,需要先進(jìn)行卸載
rpm -qa | grep -i mariadb
rpm -e --nodeps mariadb-libs-5.5.64-1.el7.x86_64
新增:經(jīng)實(shí)踐在使用yum方式安裝MySQL時(shí)不用卸載也可以反砌,會(huì)被自動(dòng)替代? 通過rpm方式安裝需要卸載,否則會(huì)出現(xiàn)依賴問題
查詢下本機(jī)mysql是否卸載干凈
rpm -qa | grep mysql
若有殘留也需要卸載
2.下載MySQL倉庫并安裝
進(jìn)入mysql官網(wǎng)獲取RPM包下載地址
https://dev.mysql.com/downloads/repo/yum/
獲取到下載地址葱轩。然后wget下載安裝包
wget https://dev.mysql.com/get/mysql80-community-release-el7-7.noarch.rpm
yum -y install mysql80-community-release-el7-7.noarch.rpm
2022年5月2日更新:
安裝過程中可能遇到如下報(bào)錯(cuò)無法安裝,原因是Mysql的GPG升級(jí)了藐握,需要重新獲取
執(zhí)行以下命令再安裝即可
rpm --import https://repo.mysql.com/RPM-GPG-KEY-mysql-2022
3.默認(rèn)安裝MySQL8.0靴拱,如果需要安裝MySQL5.7的話需要修改/etc/yum.repos.d/mysql-community.repo配置文件
將mysql80中enabled屬性改為0,并添加圖中紅框內(nèi)代碼(安裝MySQL8.0跳過該步驟)
4.安裝MySQL數(shù)據(jù)庫
yum -y install mysql-community-server
5.開啟mysql服務(wù)
systemctl start mysqld.service
6.查看mysql默認(rèn)密碼并登陸
cat /var/log/mysqld.log | grep password
mysql -uroot -p
二猾普、rpm方式安裝
首先去官網(wǎng)下載完整rpm包
下載mysql5.7的話點(diǎn)擊這里跳轉(zhuǎn)至下載頁面
解壓tar包
依次安裝所需要的rpm包即可
rpm-ivhmysql-community-common-8.0.23-1.el7.x86_64.rpm
rpm-ivhmysql-community-libs-8.0.23-1.el7.x86_64.rpm--force--nodeps
rpm-ivhmysql-community-libs-compat-8.0.23-1.el7.x86_64.rpm
rpm-ivhmysql-community-client-plugins-8.0.23-1.el7.x86_64.rpm
rpm-ivhmysql-community-client-8.0.23-1.el7.x86_64.rpm
rpm-ivhmysql-community-server-8.0.23-1.el7.x86_64.rpm
安裝完成后可以查看下已安裝的組件
rpm -qa | grep mysql
之后mysql的配置同上所述
相關(guān)軟件包(根據(jù)需要安裝即可)
mysql-community-client-5.7.18-1.el7.x86_64.rpm 客戶端
mysql-community-devel-5.7.18-1.el7.x86_64.rpm 開發(fā)庫
mysql-community-embedded-5.7.18-1.el7.x86_64.rpm 嵌入式
mysql-community-server-5.7.18-1.el7.x86_64.rpm 服務(wù)端
mysql-community-libs-5.7.18-1.el7.x86_64.rpm 共享庫
mysql-community-test-5.7.18-1.el7.x86_64.rpm 測(cè)試組件
三袜炕、MySQL相關(guān)配置修改
1.修改初始密碼(若想改為弱密碼)
SHOW variables LIKE 'validate_password%';
注:有可能遇到如下圖情況,此時(shí)先修改密碼為強(qiáng)密碼初家,便可以繼續(xù)進(jìn)行修改密碼驗(yàn)證策略操作
將密碼驗(yàn)證策略改為L(zhǎng)OW,密碼長(zhǎng)度4位以上
1 set global validate_password.policy=0; ?? #有的MySQL版本為validate_password_policy,此處請(qǐng)以上一步查詢到的字段名稱為準(zhǔn)
2 set global validate_password.length=4; #重啟MySQL后失效
此時(shí)再進(jìn)行修改密碼操作笤成,可以修改為弱密碼了
ALTER USER 'root'@'localhost' IDENTIFIED BY 'your password';
以后便可以使用你自己設(shè)置的密碼登陸
按照上述步驟你可以修改密碼為123456之類的密碼评架。但是有時(shí)候我們?yōu)榱朔奖阌洃涀莸赡芟胍衙艽a改為root之類的嗡呼。這時(shí)候只操作上面步驟改不了。百度了很多文章都是修改上述兩個(gè)策略皇耗。
這時(shí)候可以關(guān)閉檢查
set global validate_password.check_user_name = 0;
其實(shí)一開始就可以直接關(guān)閉南窗。不用設(shè)置set global validate_password.policy=0;set global validate_password.length=4郎楼;這倆万伤。直接給檢查關(guān)閉了。但是受5.7安裝影響呜袁。首先想到的是更改這兩個(gè)策略
2.設(shè)置遠(yuǎn)程連接(前提:關(guān)閉防火墻或開放3306端口)
先查看防火墻狀態(tài)
firewall-cmd --state
狀態(tài)結(jié)果敌买。running為開啟,not running為關(guān)閉
查看開放的端口號(hào)
firewall-cmd --list-all
設(shè)置開放的端口號(hào)
firewall-cmd --zone=public --add-port=3306/tcp --permanent
重啟防火墻并查看是否生效
firewall-cmd --reload? ? ?
firewall-cmd --list-all
在實(shí)際工作中阶界,經(jīng)常會(huì)用到諸如DBeaver等的數(shù)據(jù)庫管理工具進(jìn)行遠(yuǎn)程連接mysql數(shù)據(jù)庫虹钮,需要設(shè)置允許遠(yuǎn)程連接聋庵。
在mysql數(shù)據(jù)庫的user表中查看host,默認(rèn)只允許localhost訪問
只需將localhost改為%允許任意地址訪問即可
update user set host = '%' where user = 'root';
flush privileges; ? ? ? ? ? ? # 刷新權(quán)限 權(quán)限更新后刷新才會(huì)起作用
注:如果使用客戶端連接提示了plugin caching_sha2_password錯(cuò)誤芙粱,這是因?yàn)镸ySQL8.0的密碼策略默認(rèn)為caching_sha2_password(MySQL5.7無此問題)
update user set plugin = 'mysql_native_password' where user = 'root';
flush privileges; ? ? ? ? ? ? # 刷新權(quán)限 權(quán)限更新后刷新才會(huì)起作用
3.測(cè)試連接
4.my.cnf配置文件簡(jiǎn)介
前言:若使用rpm方式安裝珍策,可能無/etc/my.cnf配置文件,需將/usr/share/mysql目錄下配置文件復(fù)制至/etc目錄下
cp /usr/share/mysql/my-large.cnf /etc/my.cnf
[client]
port = 3306
socket = /var/run/mysql/mysql.sock
[mysqldump]
quick
max_allowed_packet = 16M
以上參數(shù)會(huì)被 MySQL 客戶端應(yīng)用讀取宅倒,參數(shù)說明如下:
port:MySQL 客戶端連接服務(wù)器端時(shí)使用的端口號(hào),默認(rèn)為 3306
socket:套接字文件所在目錄
quick:支持較大的數(shù)據(jù)庫轉(zhuǎn)儲(chǔ)屯耸,導(dǎo)出非常巨大的表時(shí)需要此項(xiàng)拐迁。
max_allowed_packet:服務(wù)所能處理的請(qǐng)求包的最大大小以及服務(wù)所能處理的最大的請(qǐng)求大小(當(dāng)與大的BLOB字段一起工作時(shí)相當(dāng)必要)疗绣,每個(gè)連接獨(dú)立的大小线召,大小動(dòng)態(tài)增加。
[mysqld]
user = mysql
basedir = /usr/local/mysql
datadir = /mydata/mysql/data
port = 3306
server-id = 1
socket = /var/run/mysql/mysql.sock
上述參數(shù)說明如下:
user:mysqld 程序在啟動(dòng)后將在給定 UNIX/Linux 賬戶下執(zhí)行多矮。mysqld 必須從 root 賬戶啟動(dòng)才能在啟動(dòng)后切換到另一個(gè)賬戶下執(zhí)行缓淹。mysqld_safe 腳本將默認(rèn)使用 user=mysql 選項(xiàng)來啟動(dòng) mysqld 程序。
basedir:指定 MySQL 安裝的絕對(duì)路徑塔逃;
datadir:指定 MySQL 數(shù)據(jù)存放的絕對(duì)路徑讯壶;
port:服務(wù)端口號(hào),默認(rèn)為 3306
server-id:MySQL 服務(wù)的唯一編號(hào)湾盗,每個(gè) MySQL 服務(wù)的 id 需唯一伏蚊。
socket:socket 文件所在目錄
character-set-server = utf8mb4
collation-server = utf8mb4_general_ci
init_connect = 'SET NAMES utf8mb4'
lower_case_table_names = 1
key_buffer_size = 16M
max_allowed_packet = 8M
no-auto-rehash
sql_mode=TRADITIONAL
skip-grant-tables
character-set-server:數(shù)據(jù)庫默認(rèn)字符集
collation-server:數(shù)據(jù)庫字符集對(duì)應(yīng)一些排序等規(guī)則,注意要和character-set-server對(duì)應(yīng)
init_connect:設(shè)置client連接mysql時(shí)的字符集格粪,防止亂碼
lower_case_table_names:是否對(duì)sql語句大小寫敏感躏吊,1表示不敏感(MySQL8.0+需要初始化之前設(shè)置)
key_buffer_size:用于指定索引緩沖區(qū)的大小
max_allowed_packet:設(shè)置一次消息傳輸?shù)淖畲笾?/p>
no-auto-rehash:僅僅允許使用鍵值的UPDATES和DELETES
sql_mode:表示 SQL 模式的參數(shù),通過這個(gè)參數(shù)可以設(shè)置檢驗(yàn) SQL 語句的嚴(yán)格程度
skip-grant-tables:跳過密碼驗(yàn)證 (平時(shí)不要開啟帐萎,忘記root密碼時(shí)再使用)
忘記root密碼時(shí):
重置root密碼為空(開啟skip-grant-tables)
UPDATE mysql.user SET authentication_string = '' WHERE user = 'root';