一、安装前准备工作
在linux下面 ,mysql一般是安装linux系统的时候自带的,一般都是5.1的版本。但是5.1的有一些功能没有,如 full join ,因为项目的需要,所以只好升级mysql数据库。因为官方是没有升级包的,所以只有先卸载,在升级。下载地址http://dev.mysql.com/downloads/mysql/这个是ORACLE官网的地址(Mysql已被oracle收购了)点击网址进入之后,需要你输入oracle的账号密码,如果没有,自己注册一个就行了,然后点击进入,选择同意协议,然后选择你的系统版本。
安装时如果系统支持RPM方式安装,最好用这种方式安装,简单又方便。安装MYSQL时最好在官网选择对应的版本,没有的话就选择通用版本,下面是我系统的发行版本号,
[root@localhost src]# cat /etc/issue
CentOS release 6.3 (Final)
Kernel \r on an \m
安装MySQL前,确认Internet连接正常,以便下载安装文件。(可选)
先使用 yum -y update 指令升级系统到最新版本。(可选)
我的linux系统是32位,可以用命令查询:getconf LONG_BIT
因为在官网上我选择的系统版本是Linux – Generic这个。从下载页面上看,可以看到server,client,share,devel等多个RPM包,server包是安装mysql服务的,clint包是安装MYSQL客户端的,通常安装这两个包就可以了,我这里多安装了个devel包,所以在官网下载了三个RPM包。
MySQL-devel-5.6.15-1.linux_glibc2.5.i386.rpm
MySQL-client-5.6.15-1.linux_glibc2.5.i386.rpm
MySQL-server-5.6.15-1.linux_glibc2.5.i386.rpm
可以到官网上下载对应的这三个包。
如果系统上已经存在另一个版本的MYSQL,则需要先卸载干净,再安装新版本,否则会安装出错。下面是卸载过程。
删除干净的方法:
1. rpm删除
先用rpm –qa |grep mysql查看安装的rpm包
注:有的时候,要用 # rpm -qa|grep MySQL
说明:rpm –qa | grepmysql命令是为了把mysql相关的包都列出来,我上面的例子是Linux AS4默认安装mysql的rpm软件包列表,如果是别的Linux版本列出来的列表有可能会不一样,不过不用担心,不管是什么,卸载都从最下面的一个包开始,直到卸载掉第一个为止。
说明:rpm –e 是卸载rpm包的命令,后面是包名称,最后的版本号是不用打的
再用(注意只能是client在前)
rpm -eMySQL-client-community-5.1.40-0.rhel5
rpm -eMySQL-server-community-5.1.40-0.rhel5
两个命令删除服务器端和客户端。
2. 删除老版本的开发头文件和库
这里可以肯定的是随着上面两个rpm包的删除,/usr/bin/下相应的很多mysql打头的文件和/usr/share/下的mysql文件夹都会删除,但是还有一些默认不会删除的如下:
/var/lib下面是否有一个mysql文件夹,这里是老版本的开发库。
/etc/下面是否有my.cnf文件,是老版本的配置文件。
用rm命令将以上文件全部删除。
3. 删除可能还在运行的mysql进程——这是最容易忽略的地方
可以用ps –ef | grepmysql查看下
-bash-3.1# ps-ef |grep mysql
root 4885 1 0 10:43? 00:00:00 /bin/sh bin/mysqld_safe--user=mysql
mysql4984 4885 0 10:43 ?00:00:00 /usr/local/mysql/bin/mysqld--basedir=/usr/local/mysql --datadir=/usr/local/mysql/data --user=mysql--log-error=/usr/local/mysql/data/namenode.err--pid-file=/usr/local/mysql/data/namenode.pid --socket=/tmp/mysql.sock--port=3306
root 8116 7066 0 21:11 pts/1 00:00:00 grep mysql
多于一个时把他们全部kill掉。
否则会在你安装server的rpm包的时候报启动错误,我的报错最后两行如下:
StartingMySQL..Manager of pid-file quit without updating file.[失败]
Giving mysqld2 seconds to start.
其实出现start错误的还有其它的可能,下面这篇博客写得很清楚了。
http://www.coderbolg.com/content/87.html
4. 根据以上的方法完全删除mysql后再次安装。
ERROR1045 (28000): Access denied for user ’root’@’localhost’(using password: NO)
这个错误的意思是所安装的mysql已经有密码,如果你想无密码登陆,休想!
二、正式安装
1、安装RPM包
登录到root用户,然后把下载的三个包放到/usr/local/src目录下,一般先安装server包。
在linux下安装mysql必须有root权限,否则权限会不够出现错误,并且安装完成后需要用root权限来启动和关闭mysql服务。
切换到root用户的命令如下
Shell>>su root
然后按提示输入root密码就可以了。
由于我在下载的时候是存放到/home/linux/下载 目录下,所以需要用cp命令把三个包移到/usr/local/src目录,命令如下:
Shell>>cp /home/linux/下载/MySQL-devel-5.6.15-1.linux_glibc2.5.i386.rpm/usr/local/src
Shell>>cp /home/linux/下载/MySQL-server-5.6.15-1.linux_glibc2.5.i386.rpm/usr/local/src
Shell>>cp /home/linux/下载/MySQL-client-5.6.15-1.linux_glibc2.5.i386.rpm/usr/local/src
下面开始执行安装命令,rpm软件包使用rpm命令进行安装。切换到src目录后,命令代码如下:
Shell>>rpm –ivh MySQL-devel-5.6.15-1.linux_glibc2.5.i386.rpm
Shell>>rpm –ivh MySQL- server -5.6.15-1.linux_glibc2.5.i386.rpm
Shell>>rpm –ivh MySQL- client -5.6.15-1.linux_glibc2.5.i386.rpm
结果,意外产生了,用了上述方式安装并没有成功,后来查了下资料,与我系统centOS6.3相同的安装mysql5.6版本的,用了如下命令安装,成功了。命令如下
Shell>>rpm –ivh --replacefiles MySQL-devel-5.6.15-1.linux_glibc2.5.i386.rpm
Shell>>rpm –ivh --replacefiles MySQL- server -5.6.15-1.linux_glibc2.5.i386.rpm
Shell>>rpm –ivh --replacefiles MySQL- client -5.6.15-1.linux_glibc2.5.i386.rpm
2、初始化数据库
执行如下命令:
/usr/bin/mysql_install_db
3、启动mysql服务:
执行启动命令:
service mysql start
使用命令ps -ef | grep mysql 查看mysql进程:
1. [root@localhost ~]# ps -ef | grep mysql
2. root 26047 1 0 18:14 pts/12 00:00:00 /bin/sh /usr/bin/mysqld_safe --datadir=/var/lib/mysql --pid-file=/var/lib/mysql/localhost.localdomain.pid
3. mysql 26227 26047 0 18:14 pts/12 00:00:01 /usr/sbin/mysqld --basedir=/usr --datadir=/var/lib/mysql --plugin-dir=/usr/lib64/mysql/plugin --user=mysql --log-error=/var/log/mysqld.log --pid-file=/var/lib/mysql/localhost.localdomain.pid --socket=/var/lib/mysql/mysql.sock
4. root 26545 24726 0 18:27 pts/8 00:00:00 grep mysql
4、第一次登陆设置root密码:
首先查看 cat /root/.mysql_secret
[root@localhost src]# cat/root/.mysql_secret
# The random password set for the root userat Fri Jan 10 20:00:34 2014 (local time): aJqZsA2m
然后命令行:mysql -u root -p ,然后输入上面的密码即可:
进入后输入如下命令:
mysql> show databases;
ERROR 1820 (HY000): You must SET PASSWORDbefore executing this statement
结果发现,要修改更新密码后才能进行对数据库的相关操作。
然后按照网上分享的一些常用修改密码的方式,均无法修改,后来找到一个同类问题的帖子,找到了解决方案,MySQL 5.6版本发现安装后,使用空密码无法登陆
安装的过程中有这样的一句话:
A RANDOM PASSWORD HAS BEEN SET FOR THE MySQL root USER !
You will find that password in '/root/.mysql_secret'.
You must change that password on your first connect,
no other statement but 'SET PASSWORD' will be accepted.
See the manual for the semantics of the 'password expired' flag.
大概意思就是一个随机的密码已经生成可以在 '/root/.mysql_secret'.中找到
第一次连接必须变更密码且只能使用 'SET PASSWORD'命令
下面是正确修改root密码的方法
启动mysql服务后,用随机生成的密码登录再执行set命令修改,如下:
[root@localhost src]# cat/root/.mysql_secret
# The random password set for the root userat Fri Jan 10 20:00:34 2014 (local time): aJqZsA2m
[root@localhost src]# mysql -u root -p
Enter password:
Welcome to the MySQL monitor. Commands end with ; or \g.
Your MySQL connection id is 7
Server version: 5.6.15
Copyright (c) 2000, 2013, Oracle and/or itsaffiliates. All rights reserved.
Oracle is a registered trademark of OracleCorporation and/or its
affiliates. Other names may be trademarksof their respective
owners.
Type 'help;' or '\h' for help. Type '\c' toclear the current input statement.
mysql> show databases;
ERROR 1820 (HY000): You must SET PASSWORDbefore executing this statement
mysql> setpassword=password('lu5896848');
Query OK, 0 rows affected (0.17 sec)
到此,已经成功修改密码,重启服务登录后便可以用新密码登录数据库了。
相关参考资料
http://www.cr173.com/html/19582_1.html
http://www.myexception.cn/mysql/1396913.html