CentOS7.5安裝Mysql5.7.22


一 下載

下載地址:https://www.mysql.com/downloads/

1 點擊第一個鏈接地址,進入MySQL官方網站,單擊“Downloads”下載Tab頁,進入下載界面

2 找到Community並且單擊它,出現以下的頁面

3 點擊左側第五個“MySQL Community Server”,社區版

4 進入下拉下載列表,選擇在CentOS7上tar包安裝

4 進入下拉下載列表,這里選擇在CentOS7上rpm包安裝

5 點擊Download,進入如下界面,需要登錄下載,這里選擇

6 下載成功

二 RPM包安裝

 下載文件名:mysql-5.7.22-1.el7.x86_64.rpm-bundle.tar

1 安裝包准備

1.1 查看mysql是否安裝,如果安裝了,卸載mysql

rpm -qa|grep mysql

1.2 卸載

rpm -e --nodeps mysql-libs-5.1.73-7.el6.x86_64

2 解壓安裝

2.1 創建目錄

[root@node21 software]# mkdir -p /usr/local/mysql

 2.2 解壓

[admin@node21 software]$ tar xvf /opt/software/mysql-5.7.22-1.el7.x86_64.rpm-bundle.tar  -C /usr/local/mysql
mysql-community-client-5.7.22-1.el7.x86_64.rpm
mysql-community-common-5.7.22-1.el7.x86_64.rpm
mysql-community-devel-5.7.22-1.el7.x86_64.rpm
mysql-community-embedded-5.7.22-1.el7.x86_64.rpm
mysql-community-embedded-compat-5.7.22-1.el7.x86_64.rpm
mysql-community-embedded-devel-5.7.22-1.el7.x86_64.rpm
mysql-community-libs-5.7.22-1.el7.x86_64.rpm
mysql-community-libs-compat-5.7.22-1.el7.x86_64.rpm
mysql-community-minimal-debuginfo-5.7.22-1.el7.x86_64.rpm
mysql-community-server-5.7.22-1.el7.x86_64.rpm
mysql-community-server-minimal-5.7.22-1.el7.x86_64.rpm
mysql-community-test-5.7.22-1.el7.x86_64.rpm

2.3 安裝

依次執行(幾個包有依賴關系,所以執行有先后)下面命令安裝

[root@node21 software]# cd /usr/local/mysql/
[root@node21 mysql]# rpm -ivh mysql-community-libs-5.7.22-1.el7.x86_64.rpm
[root@node21 mysql]# rpm -ivh mysql-community-client-5.7.22-1.el7.x86_64.rpm
[root@node21 mysql]# rpm -ivh mysql-community-server-5.7.22-1.el7.x86_64.rpm

安裝過程報錯"

[root@node21 mysql]# rpm -ivh mysql-community-libs-5.7.22-1.el7.x86_64.rpm 
warning: mysql-community-libs-5.7.22-1.el7.x86_64.rpm: Header V3 DSA/SHA1 Signature, key ID 5072e1f5: NOKEY
error: Failed dependencies:
    mysql-community-common(x86-64) >= 5.7.9 is needed by mysql-community-libs-5.7.22-1.el7.x86_64
    mariadb-libs is obsoleted by mysql-community-libs-5.7.22-1.el7.x86_64

 警告:紅帽安裝rpm安裝MySQL時爆出警告:mysql-community-libs-5.7.22-1.el7.x86_64.rpm: Header V3 DSA/SHA1 Signature,密鑰 key ID 5072e1f5: NOKEY。

 原因:這是由於yum安裝了舊版本的GPG keys造成的

 解決辦法:后面加上  --force --nodeps 如:rpm -ivh mysql-community-libs-5.7.22-1.el7.x86_64.rpm --force --nodeps  從 RPM 版本 4.1 開始,在安裝或升級軟件包時會檢查軟件包的簽名。

3 初始化數據庫

為了保證數據庫目錄為與文件的所有者為 mysql 登陸用戶,如果你是以 root 身份運行 mysql 服務,需要執行下面的命令初始化
mysqld --initialize --user=mysql

如果是以 mysql 身份運行,則可以去掉 --user 選項。

另外 --initialize 選項默認以“安全”模式來初始化,則會為 root 用戶生成一個密碼並將該密碼標記為過期,登陸后你需要設置一個新的密碼,而使用 --initialize-insecure 命令則不使用安全模式,則不會為 root 用戶生成一個密碼。

這里演示使用的 --initialize 初始化,會生成一個 root 賬戶密碼,密碼在log文件里,紅色區域的就是自動生成的密碼

[root@node21 mysql]# mysqld --initialize --user=mysql

mysql配置文件在/etc/my.cnf,里面指明了數據目錄。日志位置

[root@node21 mysql]# cat /var/log/mysqld.log
2018-05-19T05:53:03.738829Z 0 [Warning] TIMESTAMP with implicit DEFAULT value is deprecated. Please use --explicit_defaults_for_timestamp server option (see documentat
ion for more details).2018-05-19T05:53:03.739304Z 0 [ERROR] Can't find error-message file '/usr/share/mysql/errmsg.sys'. Check error-message file location and 'lc-messages-dir' configuratio
n directive.2018-05-19T05:53:08.434726Z 0 [Warning] InnoDB: New log files created, LSN=45790
2018-05-19T05:53:08.872448Z 0 [Warning] InnoDB: Creating foreign key constraint system tables.
2018-05-19T05:53:08.954300Z 0 [Warning] No existing UUID has been found, so we assume that this is the first time that this server has been started. Generating a new U
UID: 0fb455fb-6560-11e8-a2f0-000c29c94111.2018-05-19T05:53:08.956569Z 0 [Warning] Gtid table is not ready to be used. Table 'mysql.gtid_executed' cannot be opened.
2018-05-19T05:53:08.958761Z 1 [Note] A temporary password is generated for root@localhost: ?2nt4!-t&s#M

4 啟動數據庫

[root@node21 software]# mysql -uroot -p
Enter password:

5 修改密碼

該密碼被標記為過期了,如果想正常使用還需要修改密碼 

mysql> show databases;

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

以前的 password()函數將會被拋棄,官方建議使用下面的命令來修改密碼 

mysql> ALTER USER 'root'@'localhost' IDENTIFIED BY 'new_password';

同時,如果你設置的密碼過於簡單也會報錯。 

mysql> ALTER USER 'root'@'localhost' IDENTIFIED BY '123';

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

6 配置user表

 配置主要是root用戶+密碼,在任何主機上都能登錄MySQL數據庫。

6.1 查看表結構

mysql>desc user;

6.2 查詢user表

mysql>select User,Host,Password from user;    #舊版本
mysql>select User,host,authentication_string from user; #5.7版本以后

6.3 修改user表,把Host表內容修改為%

mysql> update user set host='%' where host='localhost';

6.4 刪除root用戶的其他host

mysql> delete from user where host != '%';

最后結果顯示

6.5 刷新退出

mysql> flush privileges;
Query OK, 0 rows affected (0.01 sec)
mysql> exit;
Bye

7 設置開機啟動

[root@node21 mysql]# systemctl enable mysqld
[root@node21 mysql]# systemctl list-unit-files | grep mysqld
mysqld.service                                enabled 

三 mysql故障解析

1 忘記用戶密碼

首先確認服務器出於安全的狀態,也就是沒有人能夠任意地連接MySQL數據庫。 因為在重新設置MySQL的root密碼的期間,MySQL數據庫完全出於沒有密碼保護的狀態下,其他的用戶也可以任意地登錄和修改MySQL的信息。可以采用將MySQL對 外的端口封閉,並且停止Apache以及所有的用戶進程的方法實現服務器的准安全狀態。最安全的狀態是到服務器的Console上面操作,並且拔掉網線。 

1.1 vi /etc/my.cnf

1.2 在[mysqld]中添加   skip-grant-tables 保存退出

1.3 重啟mysql    systemctl restart mysqld

1.4 .用戶無密碼登錄

mysql -uroot -p (直接點擊回車,密碼為空)

1.5 選擇數據庫

mysql> use mysql;

1.6 修改root密碼

MySQL 5.7 開始 數據庫中的user 表中已經將password 字段更改為authentication_string  所以更改密碼 直接使用 

mysql> update user set authentication_string=password('123456') where user='root';

mysql> ALTER USER 'root'@'localhost' IDENTIFIED BY '123456';

1.7 執行

mysql> flush privileges ;

1.8 退出

mysql>  exit;

9.刪除權限檢查

將剛才在[mysqld]的段中加上的skip-grant-tables刪除

10.重啟mysql

 systemctl restart mysqld

2.ssl_cipher報錯

錯誤描述:

添加用戶 insert into mysql.user(Host,User,Password) values("localhost","test",password("1234"));

報以下的錯誤 ERROR 1364 (HY000): Field 'ssl_cipher' doesn't have a default value錯誤

mysql5.1以上版本,我是在5.6版本上操作的。

錯語原因:

mysql用戶表的中某些字段不能為空,沒有默認值,其實是操作錯誤,mysql添加用戶是不能這樣直接insert user表的。

解決方法:

正確的添加用戶方法:

GRANT USAGE ON *.* TO 'user01'@'localhost' IDENTIFIED BY '123456' WITH GRANT OPTION;

用戶:user01,密碼:123456,這樣就添加了一個新的用戶,不會出以上的錯誤了。

3.添加用戶報錯

安裝mysql的時候出現這個問題,在增加用戶的時候

The MySQL server is running with the –skip-grant-tables option so it cannot execute this statement

出現lush privileges 一下就OK了,

mysql> flush privileges;

Query OK, 0 rows affected (0.01 sec)

–skip-grant-tables

顧名思義,數據庫啟動的時候 跳躍權限表的限制,不用驗證密碼,直接登錄。

四 mysql-connector-java與mysql版本的對應關系

官網文檔地址:

https://dev.mysql.com/doc/connector-j/5.1/en/connector-j-versions.html (Connector/J Versions 5.1)

https://dev.mysql.com/doc/connector-j/8.0/en/connector-j-versions.html (Connector/J Versions 8.0)

mysql-connector-java下載地址 :http://central.maven.org/maven2/mysql/mysql-connector-java/


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM