[root@oracle ~]# rpm -qa |grep -i mysql
可以看到在我当前系统上以安装过Mysql,不过版本较低,因此先卸载掉Mysql,再重新安装高版本的。卸载Mysql之前,先停止Mysql的服务:
a) 检查Mysql的服务状态
命令: [root@oracle ~]# service mysqld status
b) 如果Mysql的服务是开启的,则需要先停止Mysql的服务
命令: [root@oracle ~]# service mysqld stop
相应的,开启Mysql的服务命令为[root@oracle ~]# service mysqld start
2. Mysql的服务停止后,就可以删除掉在第一步中检查出的Mysql包
命令: [root@oracle ~]# rpm -ev 包名
在删除的过程中,包与包之间可能有依赖关系,删除的时候会报错,例如上面perl-DBD-MySQL-3.0007-2.el5包依赖mysql-5.0.77-3.el5包,那么就先删除
perl-DBD-MySQL-3.0007-2.el5包,再删除 mysql-5.0.77-3.el5包。
3. 最后删除老版本的Mysql文件和目录
命令: [root@oracle ~]# rm -rf /var/lib/mysql
注意:卸载Mysql后不会删除Mysql的配置文件my.cnf(Mysql的配置文件为/etc/my.cnf),在上面删除Mysql的相关包的提示里,是把my.cnf改名为my.cnf.rpmsave保存,
可以把它也删除掉,如果my.cnf没有改名另存,也是需要将它删除掉的。
命令: [root@oracle ~]# rm -rf /etc/my.cnf.rpmsave
4. 再次检查当前系统是否安装Mysql
无结果表示已经彻底卸载,接下来就可以安装Mysql了。
如果卸载mysql-libs-5.1.73-8.el6_8.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
使用:rpm -e --nodeps mysql-libs-5.1.52-1.el6_0.1.x86_64
进行卸载操作
CentOS 通过yum在线安装MySQL5.7
Step1: 检测系统是否自带安装mysql
# yum list installed | grep mysql
Step2: 删除系统自带的mysql及其依赖
命令:
# yum -y remove mysql-libs.x86_64
Step3: 给CentOS添加rpm源,并且选择较新的源
命令:
# wget dev.mysql.com/get/mysql-community-release-el6-5.noarch.rpm
# yum localinstall mysql-community-release-el6-5.noarch.rpm
# yum repolist all | grep mysql
# yum-config-manager --disable mysql55-community
# yum-config-manager --disable mysql56-community
# yum-config-manager --enable mysql57-community-dmr
# yum repolist enabled | grep mysql
Step4:安装mysql 服务器
命令:
# yum install mysql-community-server
Step5: 启动mysql
命令:
# service mysqld start
Step6: 查看mysql是否自启动,并且设置开启自启动
命令:
# chkconfig --list | grep mysqld
# chkconfig mysqld on
Step7: mysql安全设置
命令:
# mysql_secure_installation
解决mysql“Access denied for user root@localhost”
1、修改 /etc/my.cnf,在 [mysqld] 小节下添加一行:skip-grant-tables=1
这一行配置让 mysqld 启动时不对密码进行验证
2、重启 mysqld 服务:systemctl restart mysqld
3、使用 root 用户登录到 mysql:mysql -u root
4、切换到mysql数据库,更新 user 表:
update user set authentication_string = password('root'), password_expired = 'N', password_last_changed = now() where user = 'root';
在之前的版本中,密码字段的字段名是 password,5.7版本改为了 authentication_string
5、退出 mysql,编辑 /etc/my.cnf 文件,删除 skip-grant-tables=1 的内容
6、重启 mysqld 服务,再用新密码登录即可