在阿裡雲CentOS 7.4默認環境下yum安裝MySQL 8.0.11

字號+ 編輯: 种花家 修訂: 种花家 來源: 健旺博客 2023-09-11 我要說兩句(0)

用centos6.x安裝mysql8.0很麻煩,許多人支招說用docker,拜托~~不要這樣子好嗎?殺雞焉用牛刀,直接升7.x用yum不就好了嗎?在使用yum安裝有個前提,建議讀者要把原來的數據庫産品卸載干淨。

本文前提,一定要把原來的數據庫産品卸載干淨,否則可能會各種奇怪的錯誤彈出來。以下說正文:

阿裡雲7.x的公共鏡像系統初始化之後,已經爲用戶安裝了大量必須的依賴,例如gcc4.8.5,那麽只需要注意卸載yum中自帶的mariadb。

卸載之前的mariadb

卸載命令:

# 查找所有在系統内的mariadb
rpm -qa | grep mariadb
# 強制卸載mariadb 這裡打比方說安裝了mariadb-libs-5.5.56-2.el7.x86_64
# 那麽就用如下命令來對應卸載
rpm -e --nodeps mariadb-libs-5.5.56-2.el7.x86_64

mysql8.0.11安裝命令

注意之前不要安裝任何一鍵安裝包之類的産品,否則可能會出現無法獲取初始root密碼的錯誤。

# 下載mysql源
wget https://repo.mysql.com//mysql80-community-release-el7-1.noarch.rpm
# 本地安裝mysql源
yum localinstall mysql80-community-release-el7-1.noarch.rpm
# 檢查本地安裝mysql源是否成功
yum repolist enabled | grep "mysql.*-community.*"
# 控制台回複以下說明证明ok
# mysql-connectors-community/x86_64           MySQL Connectors Community 51 
# mysql-tools-community/x86_64                MySQL Tools Community 63 
# mysql80-community/x86_64                    MySQL 8.0 Community Server 17
# 正式安裝mysql 8.0.11
yum install mysql-community-server

在執行yum install指令安裝mysql時,可能出現錯誤,屬於正常現象,可以略過,不斷循環重複上述yum install mysql-community-server
這個命令即可,直到安裝成功。

啓動和找回mysql初始root密碼

mysql 8.0.x這個版本不知道搞了什麽幺蛾子,非常難以找回密碼,首次安裝成功之後,先使用systemctl命令啓動mysql:

systemctl start mysqld
# 查看mysql啓動狀態的命令是:
# systemctl status mysqld
# 注意,已經不是mysql 5.x時代的service mysqld start之類的命令了

目前通過以下命令來查看log下告知用戶的初始密碼:

grep 'temporary password' /var/log/mysqld.log
# 控制台可能回複以下類似内容
# 2018-06-24T01:00:33.381829Z 5 [Note] [MY-010454] [Server] A temporary password is generated for root@localhost: ./GblDs7r1cu

這個時候看控制台回複,尾部就是密碼。輸入登錄命令進行登錄:

mysql -uroot -p
# Enter Password:

這個時候需要你按照控制台給出的初始密碼來進mysql。

修改mysql初始root密碼

進入mysql之後輸入以下sql語句修改密碼

use mysql;
ALTER USER 'root'@'localhost' IDENTIFIED BY '你的新密碼' PASSWORD EXPIRE NEVER;

另外,很多人發現用navicat沒辦法遠程登錄mysql 8.0.11的服務器,登錄時會報一個considering update client的建議叫你更新客戶耑,怎麽辦呢? 原來是mysql 8.0.x把原來mysql 5.x的加密槼則給改了,用以下方法修改加密槼則(注意:同時允許任何ip地址登錄)。

update user set host = '%' where user = 'root'; # 此命令使得用戶可以遠程任何地點使用root賬號登錄mysql
# 修改mysql密碼算法,採用原生算法
ALTER USER 'root'@'%' IDENTIFIED WITH mysql_native_password BY '新密碼';

順便提一嘴,給不太懂mysql的新手看的,如果沒有運行第一行命令update掉mysql root賬號的可允許登錄範圍,則下面的修改密碼算法的sql命令就是:

ALTER USER 'root'@'localhost' IDENTIFIED WITH mysql_native_password BY '新密碼';

最後,嚕囌了這麽多,運行了這麽多命令,別忘了用以下命令讓mysql重新讀新的權限設定。根本不需要重啓mysql服務器。

FLUSH PRIVILEGES;

疑難問題

修改root密碼提示密碼複雜度不夠

真他娘的嚕囌, 老子愛起什麽密碼起什麽密碼,用的著你他娘的管?

設定全局變量validate_password.policy, 將它修改成0即可。這個變量的意思是安全級別,默認爲MEDIUM

set global validate_password.policy = 0;

其他變量可以通過下方語句來進行微調

mysql> show variables like 'validate_password%';
+--------------------------------------+--------+
| Variable_name                        | Value  |
+--------------------------------------+--------+
| validate_password.check_user_name    | ON     |
| validate_password.dictionary_file    |        |
| validate_password.length             | 8      |
| validate_password.mixed_case_count   | 1      |
| validate_password.number_count       | 1      |
| validate_password.policy             | MEDIUM |
| validate_password.special_char_count | 1      |
+--------------------------------------+--------+
7 rows in set (0.01 sec)


遷移完數據目錄發現無法啓動mysqld服務, 報錯: Error: 13 (Permission denied)

解決思路, 先以下命令查看mysql的錯誤日志

vim /var/log/mysqld.log

發現報錯關鍵内容是:

mysqld: File './binlog.index' not found (OS errno 13 - Permission denied)

網上千篇一律說chown -R mysql:mysql 你的新數據文档路徑就可以了, 如果千篇一律都可以, 那還要答案干啥?

如果按照網上衆口一詞的轉述方法重啓mysql仍然解決不了問題, 那麽你的問題可能是selinux引起的, 首先編輯selinux配置文档:

vim /etc/selinux/config

找到以下内容

# This file controls the state of SELinux on the system.
# SELINUX= can take one of these three values:
#     enforcing - SELinux security policy is enforced.
#     permissive - SELinux prints warnings instead of enforcing.
#     disabled - No SELinux policy is loaded.
SELINUX=enforcing

把等號後面改成另外兩者: permissive或者disabled

記得重啓一下服務器

閲完此文,您的感想如何?
  • 有用

    0

  • 沒用

    0

  • 開心

    0

  • 憤怒

    0

  • 可憐

    0

1.如文章侵犯了您的版權,請發郵件通知本站,該文章將在24小時内刪除;
2.本站標注原創的文章,轉發時煩請注明來源;
3.交流群: 2702237 13835667

相關課文
  • [InnoDB] Failed to set NUMA memory policy of buffer pool page frames

  • 讓Mysql查詢後直接返回json字符串的方法

  • postgresql的pg_dump備份簡單方法

  • 使用sql語句在MySQL庫中去掉字段左邊、右邊指定字符串

我要說說
網上賓友點評