今天给正式服务器安装mysql8,参考的这篇文章,非常详细:https://www.cnblogs.com/secretmrj/p/15600144.html
在此基础上,额外记录一下自己安装过程中遇到的小问题。
cat /etc/redhat-release 打印:CentOS Linux release 7.6.1810 (Core)
通过下面命令查看之前是否已安装mysql
rpm -qa | grep mysql
我执行后,结果如下:
qt-mysql-4.8.7-2.el7.x86_64 akonadi-mysql-1.9.2-4.el7.x86_64
现在我要安装mysql8,怎么卸载它们呢?执行下面命令即可:
rpm -e --nodeps qt-mysql-4.8.7-2.el7.x86_64(上面查出的安装包名称)
nodeps:ignore dependences,忽视(也叫不检查)依赖关系。
-e,erase,擦除之意。
照着参考文章,执行如下命令启动mysql
mysqld_safe --defaults-file=/usr/local/etc/my.cnf &
结果没反应,MySQL服务也无法启动。
查看错误日志(my.cnf里有配置路径),记录如下:
230629 15:53:43 mysqld_safe Starting mysqld daemon with databases from /var/mysql8/data 230629 15:53:43 [Note] /usr/libexec/mysqld (mysqld 5.5.60-MariaDB) starting as process 4024 ... 230629 15:53:43 [ERROR] Can't find messagefile '/usr/local/mysql8/share/mysql/errmsg.sys' 230629 15:53:43 [ERROR] Aborting
可以看出,执行mysqld_safe命令时,实际还是执行mysqld脚本。
但由于我一开始没将旧的mysql删掉,所以默认找mysqld会找到/usr/libexec/mysqld目录里去。
后面还有一系列类似的问题,解决方法就是把原有安装的删掉。
不知道删哪些文件,那就用到哪个删哪个。
例如查询mysqld_safe路径:
which mysqld_safe 打印:/usr/bin/mysqld_safe
然后就把/usr/bin/mysqld_safe删掉。
如果/etc/profile有把安装的mysql8 bin目录配置进去,此时再查询,就会查到mysql8下的mysqld_safe。
从这个角度可以得知:
/usr/bin目录优先级高于/etc/profile里的配置,即只要从/usr/bin目录找到了脚本,就默认先执行/usr/bin目录下得脚本了。
如果我们想把脚本放到/usr/bin里去,那就给脚本创建一个软链也是ok的。
本文是翟码农个人博客里Linux分类下有关centos系统安装mysql8的原创文章,转载请注明出处:http://www.zhai14.com/blog/the-most-detailed-tutorial-of-installing-mysql8-in-centos-system.html
ln -s [dir1] [dir2],dir1是真实的文件夹,dir2是dir1的软链接
一直没用心记,所以每次敲命令时,到底真实目录是放在前面还是放在后面,就犯糊涂了。
今天稍微想了一下,总算记住了。
记忆口诀:我们都爱真钱,不爱假钱,所以真实目录在钱(前,即dir1)
所以,我们就大概可以如下给mysqld_safe创建软链了:
ln -s /usr/local/mysql8/bin/mysqld_safe /usr/bin/mysqld_safe