Linux升级mysql

在一台208服务器上,原本安装了一个mariadb数据库,应开发人员要求,需安装一个版本稍高mysql数据库。208服务器是centos,内置有mysql5.1版本,想着先卸载mysql5.1然后安装一个mysql5.6版本的数据库。
操作如下:
检测系统是否自带安装mysql:

yum list installed | grep mysql

若存在,先关闭数据库:

service mysqld stop

卸载老版本数据库:

yum remove mysql mysql-*

升级mysql的yum源

rpm -Uvh http://repo.mysql.com/mysql-community-release-el6-5.noarch.rpm

注:执行上述命令后,在/etc/yum.repos.d/ 这个目录下多出mysql-community-source.repo和mysql-community.repo
安装新版本数据库:

yum install mysql-community-server

安装完成后,查看mysql版本:

mysql –V

以上操作,若遇到yes/no 的询问时,一律是yes。到目前为止,一切都还进行的相当顺利。
检查数据库默认端口是否被占用:

lsof -i :3306

3306端口已被mariadb数据库占用。
修改mysql5.6的默认端口:
编辑配置文件/etc/my.cnf,在[mysqld]下查看是否有port=3306的配置项,如果有则改成port = 3307,若没有则增加port = 3307配置项。

vim /etc/my.cnf

[mysqld]
port = 3307

修改后,再启动mysql

service mysqld start

报告启动失败,查看日志/var/log/mysqld.log :

ERROR 1558 (HY000): Column count of mysql.user is wrong. Expected 43, found 39. Created with MySQL 5

如下截图:
log

大致问题出在:ibdata1 的大小(640 pages)与指定.cnf文件配置的大小(768 pages)不一致。这个是由于卸载老版本的mysql,有一些文件残留文件导致的。只要删掉这些残留文件就可以完美解决。如下:

cd /var/lib/mysql
rm -rf ib*

处理后,再次启动:

service mysqld start

启动成功(松了一口气)。
进入mysql:

mysql –uroot

没有问题。
设置密码:

update user set password=password("123456") where user="root";
exit;

重新进入mysql:

mysql –uroot –p123456

没有问题,密码设置成功。
那本地连接下,把数据导进去。提示:没有权限访问。这个问题简单,在服务器本地,进入mysql,赋予权限即可:

GRANT ALL PRIVILEGES ON *.* TO 'root'@'%' IDENTIFIED BY '123456';

报错了:1045 access denied for user ‘root’@’localhost’ using password yes。
各种查后,命令语句没有问题。直至快要奔溃时候,不如查查看哪些情况下会产生1045这个错误代码。得到原因:1、密码不正确;2、没有登录该mysql的权限。第1种情况可以排除,那么是第2种情况了?创建一个新的数据库(small_tools_middle),新用户(admin),并赋予新用户此新建数据库权限试试:

create database small_tools_middle;
GRANT ALL PRIVILEGES ON small_tools_middle.* TO 'admin'@'%' IDENTIFIED BY '123456' ;

报错:ERROR 1558 (HY000): Column count of mysql.user is wrong. Expected 43, found 39. Created with MySQL 5
报告上述原因是:升级过MySQL,或用不同的MySQL版本进行备份迁移恢复。升级或迁移完后未使用mysql_upgrade升级数据结构有可能会造成此错误。
升级数据库结构并重启数据库:

mysql_upgrade –uroot –p123456
service mysqld restart

执行成功。
再次进入mysql数据库,赋予权限:

GRANT ALL PRIVILEGES ON *.* TO 'root'@'%' IDENTIFIED BY '123456';
flush privileges ;

执行成功,所有环境问题都已解决。

猜你喜欢

转载自blog.csdn.net/ck3207/article/details/80396527