> RedHat >

RedHat下通过rpm安装Mysql

本文通过在RedHat下使用rpm安装Mysql的过程,分享一些遇到的问题和解决方案。


      之前在Linux装过很多次MySQL,每次安装都多少有些坎坷,平时也比较懒,没有做过这方面的总结,今天将安装过程中遇到的问题总结出来,以供后续参考。
        MySQL被分解成了很多个不同的RPM软件包,如果不使用Linux系统自带的MySQL,需要下载MySQL四个比较重要的RPM包,分别是:主服务包(mian server package)、客户端包(client package)、共享组件包(shared component package)和开发包(development package),当然本文只需要用到前两个包即可。
       一、环境
             1. Red Hat Enterprise Linux 6.2 64 位
             2. MySQL 5.5.19
       二、下载
             从Mysql官网下载需要的版本 http://downloads.mysql.com/archives/community/
             本文安装文件为:MySQL-server-5.5.19-1.el6.x86_64.rpm
                                        MySQL-client-5.5.19-1.el6.x86_64.rpm

       三、安装过程

              1.  检查系统是否安装Mysql

1
rpm -qa|grep mysql

 

              需要注意的是,Linux对于大小写敏感,因此可以加入参数-i忽略大小写

 
1
rpm -qa|grep -i mysql

 

              执行命令得到如下结果:

 
1
2
[root@localhost ~]# rpm -qa|grep mysql mysql-libs-5.1.52-1.el6_0.1.x86_64

 

               因此需要将mysql-libs-5.1.52-1.el6_0.1.x86_64删除。 

              2. 检查是否存在mysql的进程

 
1
[root@localhost mysql]# ps -ef|grep mysql

 

                  如果存在mysql进程,如上,则通过以下命令杀掉:

 
1
kill -9 进程号

 

              3. 删除已存在的Mysql

 
1
rpm -e mysql-libs-5.1.52-1.el6_0.1.x86_64

 

               执行命令得到如下结果:

 
1
2
3
4
5
[root@localhost ~]# rpm -e mysql-libs-5.1.52-1.el6_0.1.x86_64 error: Failed dependencies:
        libmysqlclient.so.16()(64bit) is needed by (installed) postfix-2:2.6.6-2.2.el6_1.x86_64
        libmysqlclient.so.16(libmysqlclient_16)(64bit) is needed by (installed) postfix-2:2.6.6-2.2.el6_1.x86_64
        mysql-libs is needed by (installed) postfix-2:2.6.6-2.2.el6_1.x86_64

 

               根据错误提示是因为存在包之间的依赖关系,要删除mysql-libs之前必须删除postfix,如是接着执行命令删除postfix,得到如下提示:

 
1
2
3
4
[root@localhost ~]# rpm -e postfix error: Failed dependencies:
        /usr/sbin/sendmail is needed by (installed) cronie-1.4.4-7.el6.x86_64
        /usr/sbin/sendmail is needed by (installed) redhat-lsb-4.0-3.el6.x86_64

 

                又有更多的依赖了,因此决定采用其他方式处理这个问题,在删除mysql-libs的时候加上不检查依赖的参数--nodeps,成功删除。

 
1
[root@localhost ~]# rpm -e mysql-libs-5.1.52-1.el6_0.1.x86_64 --nodeps

 

    PS:如果是再次安装,需要注意通过find命令查找mysql,将查询到的所有文件加删掉,同时etc如果存在my.cf,删掉,检查etc/init.d和etc/rc.d/init.d下是否存在mysql相关的东西,都删掉。
                 4. 安装mysql服务端

 
1
rpm -ivh MySQL-server-5.5.19-1.el6.x86_64.rpm

 

                 执行上述命令,得到结果如下:

 
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
[root@localhost mysql]# rpm -ivh MySQL-server-5.5.19-1.el6.x86_64.rpm  Preparing...                ########################################### [100%]    1:MySQL-server           ########################################### [100%]
PLEASE REMEMBER TO SET A PASSWORD FOR THE MySQL root USER !
To do so, start the server, then issue the following commands:
 /usr/bin/mysqladmin -u root password 'new-password' /usr/bin/mysqladmin -u root -h localhost.xd password 'new-password'
  
Alternatively you can run: /usr/bin/mysql_secure_installation
 which will also give you the option of removing the test
databases and anonymous user created by default.  This is
strongly recommended for production servers.
  
See the manual for more instructions.
  
Please report any problems with the /usr/bin/mysqlbug script!

 

                   分析结果,安装很顺利,但是貌似在结尾没有启动服务。。。

                 5.  检查是否启动Mysql服务
                     很据上一步的判断,需要验证下猜想,先通过以下两个命令判断:

 
1
2
3
[root@localhost mysql]# ps -ef|grep mysql root      4032  3712  0 19:58 pts/2    00:00:00 grep mysql
[root@localhost mysql]# netstat -nap|grep 3306

 

                      第一个命令判断当前系统中是否存在mysql进程,得到结果是没有进程。
                      第二个命令是判断3306端口是否启动,也没有得到结果。
                      因此得出结论,mysql服务未启动。 


                 6.  检查mysql服务端是否安装成功

                      通过find命令查找是否存在mysql相关的文件

 
1
2
3
4
5
6
7
8
[root@localhost mysql]# find / -name mysql
/var/lib/mysql /var/lib/mysql/mysql /usr/lib64/mysql /usr/mysql /usr/share/mysql /etc/rc.d/init.d/mysql /etc/logrotate.d/mysql

 

                      然后通过rpm验证

 
1
2
[root@localhost mysql]# rpm -qa|grep -i mysql MySQL-server-5.5.19-1.el6.x86_64

 

                      可以得出结论,服务端安装成功,但是服务未启动。 


                  7. 安装mysql客户端并验证

 
1
2
3
4
5
6
[root@localhost mysql]# rpm -ivh MySQL-client-5.5.19-1.el6.x86_64.rpm  Preparing...                ########################################### [100%]    1:MySQL-client           ########################################### [100%] [root@localhost mysql]# rpm -qa|grep MySQL MySQL-client-5.5.19-1.el6.x86_64
MySQL-server-5.5.19-1.el6.x86_64

 

                

                   8. 试探未启动服务前登录报错
                     在服务未启动之前执行mysql命令,查看报错信息:

 
1
2
[root@localhost mysql]# mysql ERROR 2002 (HY000): Can't connect to local MySQL server through socket '/var/lib/mysql/mysql.sock' (2)

 

    

                  9. 启动mysql服务

 
1
service mysql start

 

                    执行结果如下:

 
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
[root@localhost mysql]# service mysql start Starting MySQL...                                          [  OK  ]
[root@localhost mysql]# mysql Welcome to the MySQL monitor.  Commands end with ; or \g.
Your MySQL connection id is 1
Server version: 5.5.19 MySQL Community Server (GPL)
  
Copyright (c) 2000, 2011, Oracle and/or its affiliates. All rights reserved.
  
Oracle is a registered trademark of Oracle Corporation and/or its
affiliates. Other names may be trademarks of their respective
owners.
  
Type 'help;' or '\h' for help. Type '\c' to clear the current input statement.
  
mysql>

 

                   10. 至此启动成功,检查相关的进程和端口

 
1
2
3
4
5
6
[root@localhost mysql]# netstat -nap|grep 3306 tcp        0      0 0.0.0.0:3306                0.0.0.0:*          LISTEN      4247/mysqld 
[root@localhost mysql]# ps -ef|grep mysql root     28355     1  0 20:52 pts/2    00:00:00 /bin/sh /usr/bin/mysqld_safe --datadir=/var/lib/mysql --pid-file=/var/lib/mysql/localhost.xd.pid
mysql    28432 28355  0 20:52 pts/2    00:00:00 /usr/sbin/mysqld --basedir=/usr --datadir=/var/lib/mysql --plugin-dir=/usr/lib64/mysql/plugin --user=mysql --log-error=/var/lib/mysql/localhost.xd.err --pid-file=/var/lib/mysql/localhost.xd.pid
root     29994  3712  0 21:47 pts/2    00:00:00 grep mysql

 

                   11. 通过远程访问数据库
                        通过远程访问安装好的mysql数据库,发现报错:

 
1
Error No. 2003 Can't connect to MySql server on '192.168.255.133'(10065)

 

                       考虑到redhat的防火墙,因此将系统防火墙关闭,再次远程登录,仍然报错:

 
1
Error No. 1130 Host'192.168.255.133' is not allowed to connect to this MySQL server

 

                       因为mysql默认是不允许远程访问数据库服务器的,所以需要进行mysql更改。

 
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
mysql> use mysql;
Reading table information for completion of table and column names
You can turn off this feature to get a quicker startup with -A
  
Database changed
mysql> select host,user from user;
+--------------+------+
| host         | user |
+--------------+------+
| 127.0.0.1    | root |
| ::1          | root |
| localhost    |      |
| localhost    | root |
| localhost.xd |      |
| localhost.xd | root |
+--------------+------+
6 rows in set (0.00 sec)
  
mysql> update mysql.user set host='%' where host='localhost' and user='root';
Query OK, 1 row affected (0.22 sec)
Rows matched: 1  Changed: 1  Warnings: 0
  
mysql> flush privileges;

 

                       重新远程登录成功。

(责任编辑:IT)