1. 如果已经现在安装,需要完全删除,我使用的包管理器安装,删除命令如下
删除mysql的数据文件
sudo rm /var/lib/mysql/ -R
删除mysql的配置文件
sudo rm /etc/mysql/ -R
(这两步非常重要,百度上很多文章都没有,如果是改完了密码还好,没改重装依然是系统自定账号密码)
自动卸载mysql(包括server和client)
sudo apt-get autoremove mysql* --purge
sudo apt-get remove apparmor
(有时候自动卸载并没有卸载完成,我的有一次就就卸载失败了,建议执行两次)
然后在终端中查看MySQL的依赖项:dpkg --list|grep mysql
(这一步即使没有显示也要进行下面的删除)
卸载: sudo apt-get remove dbconfig-mysql
卸载:sudo apt-get remove mysql-client
卸载:sudo apt-get remove mysql-client-5.7
卸载:sudo apt-get remove mysql-client-core-5.7
再次执行自动卸载:sudo apt-get autoremove mysql* --purge
查看MySQL的剩余依赖项:dpkg --list|grep mysql
(这一步即使没有显示也要进行下面的删除)
卸载:sudo apt-get remove php7.0-mysql
清除残留数据:dpkg -l|grep ^rc|awk ‘{print$2}’|sudo xargs dpkg -P
再次查看MySQL的剩余依赖项:dpkg --list|grep mysql
至此已经没有了MySQL的依赖项,彻底删除!
2. 重新安装
安装:
sudo apt-get --purge remove mysql-server mysql-common mysql-client
sudo apt-get install mysql-server mysql-common mysql-client
启动一下试试
sudo /etc/init.d/mysql restart
重启
service mysql restart
本地使用mysql 进行尝试
3. mysql 的一些配置
修改root 账号的密码
alter user'root'@'localhost' identified by 'newpassword';
newpassword 就是要修改的密码
4. 配置安全组规则
阿里云为了用户考虑,必须得配置安全组规则,配置很简单,入方向,打开默认的数据库 3306端口就行
5. 链接
```
这个时候,数据库正常启动的话,是可以进行链接的,使用数据库链接工具进行链接
使用ssh 加数据库的账户名密码(地址写 127.0.0.1)
```
6. 问题
```
为什么上面只能使用ssh 链接?
因为直接使用ip 端口 账户密码不能链接
本地尝试 telnet ip 3306
发现访问拒绝
```
7. 排查
```
可能会造成的这个的原因汇总
1. 检查mysql是否启动
2. 检查防火墙开启
3. 检查本机3306端口是否处于监听状态
4. 检查阿里云控制台是否开启了安全限制
5. 检查mysql用户能否在远程进行登录
6. mysql 的 bind-address 设置为 127.0.0.1
```
8. 逐个排查和解决
```
1. 第1,3,4 三个可以排除,因为刚安装的可以访问,安全组也进行配置了,可以简单验证一下
查看mysql端口号 mysql> SHOW GLOBAL VARIABLES LIKE 'PORT'; telent 3306 断口拒绝,不只是网络问题
查看服务 ps -ef | grep mysql
查看3306 端口 netstat -tlanp | grep 3306
安全组直接配置就行
2. 查看防火墙
查看已经开放的端口:
firewall-cmd --list-ports
开启端口3306
firewall-cmd --zone=public --add-port=3306/tcp --permanent
重启防火墙
firewall-cmd --reload
这个我的是已经打开了这个的,也排除
3. 检查mysql用户能否在远程进行登录
这个是查看mysql 中user表的host ,如果是localhost 直接改成 %
再次尝试,依然是不行,那就只有最后一个了
4. 要找到bind-address的设置, 需要找到mysql的配置文件
$ sudo find / -name my.cnf
这个时候就能看到所有的配置相关的文件, 我看到的文件中有这么一段描述
‘’’
The MariaDB/MySQL tools read configuration files in the following order:
“/etc/mysql/mariadb.cnf” (this file) to set global defaults,
“/etc/mysql/conf.d/.cnf" to set global options.
"/etc/mysql/mariadb.conf.d/.cnf” to set MariaDB-only options.
“~/.my.cnf” to set user-specific options.
‘’’
大意是根据根据 1,2,3,4的优先级来判断,那么就根据这4个文件寻找一下,
最后在 vi /etc/mysql/mariadb.conf.d/50-server.cnf 这个文件中找到了 bind-address 127.0.0.1 修改之后, 就完成了
```
9. 总结
折腾了一天,参考了很多的博客,也记录一下,给以后出现这样问题的提供一个思路。
参考blog
https://blog.csdn.net/weixin_45525272/article/details/107774348
https://blog.csdn.net/qq_29247839/article/details/110071112
https://blog.csdn.net/CSDNLiuMing/article/details/90236877
https://www.cnblogs.com/ziroro/p/9479869.html