1. 程式人生 > 實用技巧 >【MySQL】CentOS7 使用yum安裝msyql8教程

【MySQL】CentOS7 使用yum安裝msyql8教程

centos7 利用yum安裝mysql8.0
linux版本:centos7.6
mysq版本:8.0.15


解除安裝mysql的命令:

yum remove mysql-xxx-xxx-
刪除mysql的配置檔案,解除安裝不會自動刪除配置檔案,首先使用如下命令查找出所用的配置檔案;

find / -name mysql
可能的顯示結果如下:

/etc/logrotate.d/mysql

/etc/selinux/targeted/active/modules/100/mysql

/etc/selinux/targeted/tmp/modules/100/mysql

/var/lib/mysql

/var/lib/mysql/mysql

/usr/bin/mysql

/usr/lib64/mysql

/usr/local/mysql
根據需求使用以下命令 依次 對配置檔案進行刪除

rm -rf /var/lib/mysql

rpm -e --nodeps xxx
刪除MariaDB的檔案

-- 使用rpm 命令查找出要刪除的mariadb檔案

rpm -qa | grep mariadb

-- 可能查出的檔案

mariadb-libs-5.5.56-2.el7.x86_64

-- 刪除上面的程式

rpm -e --nodeps mariadb-libs-5.5.56-2.el7.x86_64

centos的yum 源中預設是沒有mysql的,所以我們需要先去官網下載mysql的repo源並安裝。

在MySQL官網中下載YUM源rpm安裝包:https://dev.mysql.com/downloads/repo/yum/

也可以選擇執行命令下載YUM源rpm安裝包:

wget https://dev.mysql.com/get/mysql80-community-release-el7-1.noarch.rpm

安裝 yum repo檔案;

rpm -ivh mysql80-community-release-el7-11.noarch.rpm

yum localinstall mysql80-community-release-el7-1.noarch.rpm
會在/etc/yum.repos.d/目錄下生成兩個repo檔案mysql-community.repo mysql-community-source.repo

更新yum源:

yum clean all
yum makecache

檢視mysql yum倉庫中mysql版本,使用如下命令:

yum repolist all | grep mysql

可以看到 MySQL 5.5 5.6 5.7為禁用狀態 而MySQL 8.0為啟用狀態;

如果您不想安裝mysql8.0的版本我們可以按下面操作去做,要是安裝的mysql8.0版本這步可以略過。

使用 yum-config-manager 命令修改相應的版本為啟用狀態最新版本為禁用狀態:

yum-config-manager --disable mysql80-community

yum-config-manager --enable mysql57-community

或者可以編輯 mysql repo檔案,將相應版本下的enabled改成 1 即可:

cat /etc/yum.repos.d/mysql-community.repo

安裝mysql 命令:

yum install mysql-community-server

開啟mysql服務:

systemctl start mysqld.service

設定開機自啟:

systemctl enable mysqld.service

-- 如果開機沒有啟動的話就使用下面這個命令吧,反正我是沒使用
systemctl daemon-reload
資料庫的服務操作:

啟動mysql

systemctl start mysqld.service

結束

systemctl stop mysqld.service

重啟

systemctl restart mysqld.service

開機自啟

systemctl enable mysqld.service

獲取初始密碼登入mysql

mysql在安裝後會建立一個root@locahost賬戶,並且把初始的密碼放到了/var/log/mysqld.log檔案中;

cat /var/log/mysqld.log | grep password

使用初始密碼登入mysql

mysql -uroot -p

mysql8.0版本必須符合長度(預設是8位),且必須含有數字,小寫或大寫字母,特殊字元。因為實在我本地自己的庫,所以我修改了密碼最小長度和密碼的策略

mysql 8.0以上 新版本賬號密碼策略修改和密碼修改
老版本的密碼策略變數:

    validate_password_policy 這個引數用於控制validate_password的驗證策略 0-->low  1-->MEDIUM  2-->strong。

  validate_password_length密碼長度的最小值(這個值最小要是4)。

  validate_password_number_count 密碼中數字的最小個數。

  validate_password_mixed_case_count大小寫的最小個數。

  validate_password_special_char_count 特殊字元的最小個數。

  validate_password_dictionary_file 字典檔案

   8.0後要注意密碼策略變數變化 

    validate_password.check_user_name ON

    validate_password.dictionary_file

    validate_password.length

    validate_password.mixed_case_count

    validate_password.number_count

    validate_password.policy

    validate_password.special_char_count

如:validate_password_policy 變為validate_password.policy.

所以

set global validate_password_policy=0;變為 set global validate_password.policy=0 ;

密碼最小長度(4):

set global validate_password_length=6; 變為 set global validate_password.length=4

修改root的密碼:

ALTER USER 'root'@'localhost' IDENTIFIED BY 'root';

遠端設定:

遠端設定

mysql> use mysql;
mysql> update user set host='%' where user='root';

授權使用者名稱的許可權,賦予任何主機訪問資料的許可權

本人沒有執行這步

mysql> GRANT ALL PRIVILEGES ON . TO 'root'@'%'WITH GRANT OPTION;

mysql> FLUSH PRIVILEGES;

開放3306埠:

-- 檢視已經開放的埠
firewall-cmd --list-ports

-- 開啟埠
firewall-cmd --zone=public --add-port=3306/tcp --permanent
命令含義:

  –zone #作用域

  –add-port=80/tcp #新增埠,格式為:埠/通訊協議

  –permanent #永久生效,沒有此引數重啟後失效

重啟防火牆:

重啟firewall

firewall-cmd --reload

停止firewall

systemctl stop firewalld.service

禁止firewall開機啟動

systemctl disable firewalld.service

埠開放後就可以進行資料庫連線操作了,在使用Navicat連線 Mysql 8.0.15可能會出現問題 Client does not support authentication protocol 錯誤解決方法:

修改加密規則

ALTER USER 'root'@'%' IDENTIFIED BY 'password' PASSWORD EXPIRE NEVER;

更新一下使用者的密碼

ALTER USER 'root'@'%' IDENTIFIED WITH mysql_native_password BY 'password';

重新整理許可權

FLUSH PRIVILEGES;

mysql的其他操作:

  檢視資料庫編碼:

show variables like 'character%';

SHOW VARIABLES WHERE Variable_name LIKE 'character_set_%' OR Variable_name LIKE 'collation%'

檢視單個數據庫的編碼設定

方法一:

select * from information_schema.schemata where schema_name="test_character";

方法二:

show crate database test_character;

檢視單個表的編碼設定

show crate table test_character.test;

如果編碼不統一,很容易出現中文亂碼,下面介紹在多個層面上修改編碼設定

建立資料庫時直接指定編碼

create database <資料庫名> character set utf8;

修改資料庫的編碼

alter database <資料庫名> character set utf8;

建立表時指定編碼

create table <表名> (
id int(10),
name varchar(20)
)default charset=utf8;

修改表的編碼

alter table <表名> character set utf8;

資料庫中下面的幾個變數必須是uft8或是utf8mb4:

character_set_client (客戶端來源資料使用的字符集)
character_set_connection (連線層字符集)
character_set_database (當前選中資料庫的預設字符集)
character_set_results (查詢結果字符集)
character_set_server (預設的內部操作字符集)

資料庫連線引數中:

characterEncoding=utf8會被自動識別為utf8mb4,也可以不加這個引數,會自動檢測。

而autoReconnect=true是必須加上的。

部分引數配置查詢命令:

查詢mysql最大連線數設定

show global variables like 'max_conn%';

SELECT @@MAX_CONNECTIONS AS 'Max Connections';

檢視最大連結數

show global status like 'Max_used_connections';

檢視慢查詢日誌是否開啟以及日誌位置

show variables like 'slow_query%';

檢視慢查詢日誌超時記錄時間

show variables like 'long_query_time';

檢視連結建立以及現在正在連結數

show status like 'Threads%';

檢視資料庫當前連結

show processlist;

檢視資料庫配置

show variables like '%quer%';

檢視mysql版本:

select version();