centos7 安裝mysql8.0
下載mysql8.0rpm安裝包
wget https://dev.mysql.com/get/mysql80-community-release-el7-1.noarch.rpm
安裝yumrepo檔案
rpm -ivh mysql80-community-release-el7-11.noarch.rpm
更新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 命令:
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();