(轉)詳解騰訊雲CentOS7.0使用yum安裝mysql及使用遇到的問題

原文鏈接:http://blog.csdn.net/xlgen157387/article/details/49964557

背景:

用騰訊雲+校園計劃的1元服務器,(http://www.qcloud.com/event/qcloudSchool)安裝了Centos7.0,在安裝MySQL的時候,使用yum list | grep mysql 來查找yum源中是否有mysql,結果如下:

[root@VM_47_56_centos ~]# yum list | grep mysql
akonadi-mysql.x86_64                    1.9.2-4.el7                    base     
apr-util-mysql.x86_64                   1.5.2-6.el7                    base       
mysql-proxy.x86_64                      0.8.5-2.el7                    epel     
mysql-proxy-devel.x86_64                0.8.5-2.el7                    epel     
mysql-router.x86_64                     2.0.2-1.el7                    mysql-tools-community
mysql-router-debuginfo.x86_64           2.0.2-1.el7                    mysql-tools-community
mysql-utilities.noarch                  1.5.6-1.el7                    mysql-tools-community
mysql-utilities-extra.noarch            1.5.6-1.el7                    mysql-tools
mysqlreport.noarch                      3.5-11.el7                     epel     
mysqltuner.noarch                       1.2.0-7.el7                    epel     
省略部分內容。。。。
[root@VM_47_56_centos ~]# 
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13

總之是看不到mysql-server的影子,(PS:據說Centos7.0的源中暫時還沒有mysql,但是相同版本的Centos在阿里雲是可以直接使用yum install mysql-server 來直接安裝mysql的)

於是找了一些mysql的安裝源,安裝過程如下:

安裝過程:

爲了解決這個問題,我們要先下載mysql的repo源。

  • 1、下載mysql的repo源
$ wget http://repo.mysql.com/mysql-community-release-el7-5.noarch.rpm
  • 1
  • 1
  • 2、安裝mysql-community-release-el7-5.noarch.rpm包
$ sudo rpm -ivh mysql-community-release-el7-5.noarch.rpm
  • 1
  • 1

安裝這個包後,會獲得兩個mysql的yum repo源: 
/etc/yum.repos.d/mysql-community.repo和 
/etc/yum.repos.d/mysql-community-source.repo。

  • 3、安裝mysql
$ sudo yum install mysql-server
  • 1
  • 1

這個過程中就會看到有mysql的軟件包存在:

[root@VM_47_56_centos ~]# sudo yum install mysql-server
已加載插件:fastestmirror, langpacks                   
| 2.5 kB  00:00:00     
mysql-tools-community                                                                  | 2.5 kB  00:00:00     
mysql56-community                                                                         | 2.5 kB  00:00:00     
(1/3): mysql-connectors-community/x86_64/primary_db                                       | 8.6 kB  00:00:00     
(2/3): mysql-tools-community/x86_64/primary_db                                            |  22 kB  00:00:00     
(3/3): mysql56-community/x86_64/primary_db                                                | 109 kB  00:00:01     
Loading mirror speeds from cached hostfile
 * base: mirrors.sina.cn
 * extras: mirrors.sina.cn
 * updates: mirrors.sina.cn
正在解決依賴關係
--> 正在檢查事務

省略內容。。。

依賴關係解決
=================================================================================================================
 Package                           架構             版本                       源                           大小
=================================================================================================================
正在安裝:
 mysql-community-libs              x86_64           5.6.27-2.el7               mysql56-community           2.0 M
      替換  mariadb-libs.x86_64 1:5.5.44-1.el7_1
 mysql-community-server            x86_64           5.6.27-2.el7               mysql56-community            58 M
爲依賴而安裝:
 mysql-community-client            x86_64           5.6.27-2.el7               mysql56-community            19 M
 mysql-community-common            x86_64           5.6.27-2.el7               mysql56-community           256 k
 numactl-libs                      x86_64           2.0.9-5.el7_1              

事務概要
=================================================================================================================
安裝  2 軟件包 (+9 依賴軟件包)

總下載量:80 M
Is this ok [y/d/N]: y
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13
  • 14
  • 15
  • 16
  • 17
  • 18
  • 19
  • 20
  • 21
  • 22
  • 23
  • 24
  • 25
  • 26
  • 27
  • 28
  • 29
  • 30
  • 31
  • 32
  • 33
  • 34
  • 35
  • 36
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13
  • 14
  • 15
  • 16
  • 17
  • 18
  • 19
  • 20
  • 21
  • 22
  • 23
  • 24
  • 25
  • 26
  • 27
  • 28
  • 29
  • 30
  • 31
  • 32
  • 33
  • 34
  • 35
  • 36

下邊的安裝和其他安裝一樣,

根據步驟安裝就可以了,不過安裝完成後,沒有密碼,需要重置密碼。

  • 4、重置密碼

重置密碼前,首先要登錄

$ mysql -u root
  • 1
  • 1

登錄時有可能報這樣的錯:ERROR 2002 (HY000): Can‘t connect to local MySQL server through socket ‘/var/lib/mysql/mysql.sock‘ (2),原因是/var/lib/mysql的訪問權限問題。下面的命令把/var/lib/mysql的擁有者改爲當前用戶:

$ sudo chown -R mysql:mysql /var/lib/mysql #這裏的mysql是用戶名(需要設置用戶組合用戶)例:sudo chown -R root:root /var/lib/mysql
  • 1
  • 1

然後,重啓服務:

$ service mysqld restart
  • 1
  • 1

接下來登錄重置密碼:

$ mysql -u root
mysql > use mysql;
mysql > update user set password=password('xu827928') where user='root';
mysql > exit;
  • 1
  • 2
  • 3
  • 4
  • 1
  • 2
  • 3
  • 4
  • 5、開放3306端口(可以不用設置)
$ sudo vim /etc/sysconfig/iptables
  • 1
  • 1

添加以下內容:

-A INPUT -p tcp -m state --state NEW -m tcp --dport 3306 -j ACCEPT
  • 1
  • 1

保存後重啓防火牆:

$ sudo service iptables restart
  • 1
  • 1

這樣從其它客戶機也可以連接上mysql服務了。

  • 6、修改權限可以使其他機器登錄:
mysql>mysql -h localhost -u root  //這樣應該可以進入MySQL服務器 
mysql>GRANT ALL PRIVILEGES ON *.* TO 'root'@'%' WITH GRANT OPTION  //賦予任何主機訪問數據的權限 
mysql>FLUSH PRIVILEGES //修改生效 
mysql>EXIT //退出MySQL服務器
  • 1
  • 2
  • 3
  • 4
  • 1
  • 2
  • 3
  • 4

使用時遇到的問題

(1)java.sql.SQLException: Access denied for user ‘root’@’localhost’ (using password:YES)

java.sql.SQLException: Access denied for user 'root'@'localhost' (using password: YES) 
at com.mysql.jdbc.SQLError.createSQLException(SQLError.java:946) 
at com.mysql.jdbc.MysqlIO.checkErrorPacket(MysqlIO.java:2870)
at com.mysql.jdbc.MysqlIO.checkErrorPacket(MysqlIO.java:812) 
at com.mysql.jdbc.MysqlIO.secureAuth411(MysqlIO.java:3269)
at com.mysql.jdbc.MysqlIO.doHandshake(MysqlIO.java:1182) 
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6

問題的場景是:在命令行模式下用戶名和密碼都是正確的但是就是出現登陸不了授權失敗的問題。

解決方法:

進入MySQL命令臺:mysql> select user,password,host from mysql.user;

這裏寫圖片描述

可以看出該表顯示的倒數第二行爲:

+--------+-------------------------------------------+--------------------+
| user   | password                                  | host               |
+--------+-------------------------------------------+--------------------+
| root   |                                           | %                  |
  • 1
  • 2
  • 3
  • 4
  • 1
  • 2
  • 3
  • 4

可以看出在root用戶下的任何主機是沒有password的,因此可以採取兩種方式,在遠端使用的時候沒有密碼,顯然是不安全的,然後就是爲其在遠端訪問的時候設置密碼。步驟如下:

mysql> grant all privileges on *.* to root@"%" identified by "your password";
Query OK, 0 rows affected (0.00 sec)

mysql> flush privileges;
Query OK, 0 rows affected (0.00 sec)
  • 1
  • 2
  • 3
  • 4
  • 5
  • 1
  • 2
  • 3
  • 4
  • 5

這相當於是給IP-xxx.xxx.xxx.xxx賦予了所有的權限,包括遠程訪問權限。 
這樣就可以爲其設置密碼,然後就可以使用密碼進行登錄。

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章