Ubuntu18.04远程访问MySQL的血泪史

事情是这样的,我想将本地的项目扔到Linux中,然后我就开始了数据库远程访问ubuntu18.04之旅

进入Ubuntu18.04

首先更新了阿里云的源,然后也进行了update。

通过:sudo apt-get install mysql-server安装了MySQL5.7

service mysql start能够正常启动

因为我想远程连接MySQL,所以我先修改了MySQL的配置文件:

MySQL允许远程访问,将bind-address注释掉

在这里插入图片描述

use mysql数据库,然后查看user和host表
在这里插入图片描述
将root的host改成’%’,否则windows的navicat连接的时候会出现用户不能授权的错误
在这里插入图片描述
当我以为万事具备的时候,重启mysql服务出现了问题。。。直接崩溃!
在这里插入图片描述

我根据提示的命令继续挖掘可能的问题

● mysql.service - MySQL Community Server
   Loaded: loaded (/lib/systemd/system/mysql.service; enabled; vendor preset: en
   Active: failed (Result: exit-code) since Fri 2021-03-12 21:34:18 CST; 1min 42
  Process: 7372 ExecStart=/usr/sbin/mysqld --daemonize --pid-file=/run/mysqld/my
  Process: 7363 ExecStartPre=/usr/share/mysql/mysql-systemd-start pre (code=exit
 Main PID: 844 (code=exited, status=0/SUCCESS)

3月 12 21:34:17 ubuntu systemd[1]: mysql.service: Failed with result 'exit-code'
3月 12 21:34:17 ubuntu systemd[1]: Failed to start MySQL Community Server.
3月 12 21:34:18 ubuntu systemd[1]: mysql.service: Service hold-off time over, sc
3月 12 21:34:18 ubuntu systemd[1]: mysql.service: Scheduled restart job, restart
3月 12 21:34:18 ubuntu systemd[1]: Stopped MySQL Community Server.
3月 12 21:34:18 ubuntu systemd[1]: mysql.service: Start request repeated too qui
3月 12 21:34:18 ubuntu systemd[1]: mysql.service: Failed with result 'exit-code'
3月 12 21:34:18 ubuntu systemd[1]: Failed to start MySQL Community Server.

PS:我当时还不知道用journalctl会比systemctl status显示的更多,不会截断报错信息
这好像看不出啥东西,于是我追踪mysql的日志文件查看错误,好像也没什么问题。

hadoop@ubuntu:~$ cat /var/log/mysql/error.log
2021-03-12T11:47:25.399390Z 0 [Note] Giving 0 client threads a chance to die gracefully
2021-03-12T11:47:25.399467Z 0 [Note] Shutting down slave threads
2021-03-12T11:47:25.399475Z 0 [Note] Forcefully disconnecting 0 remaining clients
2021-03-12T11:47:25.399516Z 0 [Note] Event Scheduler: Purging the queue. 0 events
2021-03-12T11:47:25.399690Z 0 [Note] Binlog end
2021-03-12T11:47:25.401732Z 0 [Note] Shutting down plugin 'auth_socket'
2021-03-12T11:47:25.401988Z 0 [Note] Shutting down plugin 'ngram'
2021-03-12T11:47:25.401998Z 0 [Note] Shutting down plugin 'partition'
2021-03-12T11:47:25.402001Z 0 [Note] Shutting down plugin 'BLACKHOLE'
2021-03-12T11:47:25.402008Z 0 [Note] Shutting down plugin 'ARCHIVE'
2021-03-12T11:47:25.402010Z 0 [Note] Shutting down plugin 'PERFORMANCE_SCHEMA'
2021-03-12T11:47:25.402093Z 0 [Note] Shutting down plugin 'MRG_MYISAM'
2021-03-12T11:47:25.402102Z 0 [Note] Shutting down plugin 'MyISAM'
2021-03-12T11:47:25.402137Z 0 [Note] Shutting down plugin 'INNODB_SYS_VIRTUAL'
2021-03-12T11:47:25.402159Z 0 [Note] Shutting down plugin 'INNODB_SYS_DATAFILES'
2021-03-12T11:47:25.402164Z 0 [Note] Shutting down plugin 'INNODB_SYS_TABLESPACES'
2021-03-12T11:47:25.402166Z 0 [Note] Shutting down plugin 'INNODB_SYS_FOREIGN_COLS'
2021-03-12T11:47:25.402168Z 0 [Note] Shutting down plugin 'INNODB_SYS_FOREIGN'
2021-03-12T11:47:25.402170Z 0 [Note] Shutting down plugin 'INNODB_SYS_FIELDS'
2021-03-12T11:47:25.402172Z 0 [Note] Shutting down plugin 'INNODB_SYS_COLUMNS'
2021-03-12T11:47:25.402173Z 0 [Note] Shutting down plugin 'INNODB_SYS_INDEXES'
2021-03-12T11:47:25.402188Z 0 [Note] Shutting down plugin 'INNODB_SYS_TABLESTATS'
2021-03-12T11:47:25.402190Z 0 [Note] Shutting down plugin 'INNODB_SYS_TABLES'
2021-03-12T11:47:25.402192Z 0 [Note] Shutting down plugin 'INNODB_FT_INDEX_TABLE'
2021-03-12T11:47:25.402193Z 0 [Note] Shutting down plugin 'INNODB_FT_INDEX_CACHE'
2021-03-12T11:47:25.402195Z 0 [Note] Shutting down plugin 'INNODB_FT_CONFIG'
2021-03-12T11:47:25.402197Z 0 [Note] Shutting down plugin 'INNODB_FT_BEING_DELETED'
2021-03-12T11:47:25.402198Z 0 [Note] Shutting down plugin 'INNODB_FT_DELETED'
2021-03-12T11:47:25.402200Z 0 [Note] Shutting down plugin 'INNODB_FT_DEFAULT_STOPWORD'
2021-03-12T11:47:25.402202Z 0 [Note] Shutting down plugin 'INNODB_METRICS'
2021-03-12T11:47:25.402203Z 0 [Note] Shutting down plugin 'INNODB_TEMP_TABLE_INFO'
2021-03-12T11:47:25.402205Z 0 [Note] Shutting down plugin 'INNODB_BUFFER_POOL_STATS'
2021-03-12T11:47:25.402206Z 0 [Note] Shutting down plugin 'INNODB_BUFFER_PAGE_LRU'
2021-03-12T11:47:25.402208Z 0 [Note] Shutting down plugin 'INNODB_BUFFER_PAGE'
2021-03-12T11:47:25.402210Z 0 [Note] Shutting down plugin 'INNODB_CMP_PER_INDEX_RESET'
2021-03-12T11:47:25.402211Z 0 [Note] Shutting down plugin 'INNODB_CMP_PER_INDEX'
2021-03-12T11:47:25.402213Z 0 [Note] Shutting down plugin 'INNODB_CMPMEM_RESET'
2021-03-12T11:47:25.402214Z 0 [Note] Shutting down plugin 'INNODB_CMPMEM'
2021-03-12T11:47:25.402216Z 0 [Note] Shutting down plugin 'INNODB_CMP_RESET'
2021-03-12T11:47:25.402218Z 0 [Note] Shutting down plugin 'INNODB_CMP'
2021-03-12T11:47:25.402219Z 0 [Note] Shutting down plugin 'INNODB_LOCK_WAITS'
2021-03-12T11:47:25.402221Z 0 [Note] Shutting down plugin 'INNODB_LOCKS'
2021-03-12T11:47:25.402223Z 0 [Note] Shutting down plugin 'INNODB_TRX'
2021-03-12T11:47:25.402224Z 0 [Note] Shutting down plugin 'InnoDB'
2021-03-12T11:47:25.404207Z 0 [Note] InnoDB: FTS optimize thread exiting.
2021-03-12T11:47:25.404704Z 0 [Note] InnoDB: Starting shutdown...
2021-03-12T11:47:25.505904Z 0 [Note] InnoDB: Dumping buffer pool(s) to /var/lib/mysql/ib_buffer_pool
2021-03-12T11:47:25.506302Z 0 [Note] InnoDB: Buffer pool(s) dump completed at 210312 19:47:25
2021-03-12T11:47:26.531826Z 0 [Note] InnoDB: Shutdown completed; log sequence number 2728480
2021-03-12T11:47:26.532623Z 0 [Note] InnoDB: Removed temporary tablespace data file: "ibtmp1"
2021-03-12T11:47:26.532641Z 0 [Note] Shutting down plugin 'MEMORY'
2021-03-12T11:47:26.532650Z 0 [Note] Shutting down plugin 'CSV'
2021-03-12T11:47:26.532655Z 0 [Note] Shutting down plugin 'sha256_password'
2021-03-12T11:47:26.532664Z 0 [Note] Shutting down plugin 'mysql_native_password'
2021-03-12T11:47:26.533015Z 0 [Note] Shutting down plugin 'binlog'
2021-03-12T11:47:26.533633Z 0 [Note] /usr/sbin/mysqld: Shutdown complete
怀疑1 编码问题

于是上网搜寻了一个晚上,有的说是因为修改了配置文件,编码不匹配导致mysql无法启动,于是我又在编码这个问题上捣鼓了半天。还是没成功。。

由于我在安装好mysql之后拍了一个快照,我干脆舍弃这个,恢复快照,然后我不修改任何的配置文件,直接开启mysql服务,是能正常启动的,然后尝试重启mysql服务,同样报错了。我才排除了编码的问题。才知道,原来是我的mysql本来就有问题?

求助

不知如何下手的我,在stackoverflow上询问(emm,不应该在这里询问这类问题,应该在ask ubuntu上问比较适合,可能是老天看我挣扎了那么久,让我这个提问被锁了之前就有几位用户给了我很多解决方法。

从12日中午之前就没有任何东西被写入日志文件——但是systemctl报告错误。

因此,要么主机坏了,无法生成服务(例如,内存严重不足),要么启动脚本已损坏,要么可执行文件丢失/损坏,要么配置文件已更改,日志正在其他地方写入等。

根据我的大胆推测应该是主机坏了,因为我装好之后,mysql是可以启动的,所以启动脚本应该没损坏,配置也没更改过,我尝试再开启一个虚拟机,进行同样的操作,结果mysql服务是可以restart的。

后来我基本可以确定是因为内存空间不足的问题:ubuntu下磁盘空间不足导致mysql无法启动

因为之前启动的时候报过如下错误(因为挣扎了很久,有一些错误信息没有截图或者复制下来,这是在浏览器的历史里面找的我搜过的问题):

Can't connect to local MySQL server through socket '/var/run/mysqld/mysqld.sock

于是找到mysql的配置文件
在这里插入图片描述
找到datadir这个目录

因为是磁盘空间不足,所以我们需要查看 mysql 保存数据的所在位置,datadir 或 tmpdir 这两项所在磁盘空间的使用情况,查看 datadir 所在磁盘空间的使用情况。

通过df命令查看磁盘空间可用率是0,这就是导致 mysql 无法启动的原因!删除该目录下的其它文件,腾出磁盘空间,即可解决问题!然后重启 mysql 服务。

开始远程访问

经过一顿乱搞,终于要开始远程访问了!

但是又有新的问题出现了!
在这里插入图片描述
错误说没有权限查看数据库,这是怎么回事呢?

我们再去看看MySQL的配置文件,找到datadir,刚刚我们已经找到这个目录在哪了,给对应目录添加对应的权限即可。
在这里插入图片描述
修改权限
在这里插入图片描述
尝试再次登录:可以看到数据库拉
在这里插入图片描述
host主机不能访问本机的mysql服务,连接非本机的mysql的时候,默认host是localhost,我们需要将这个mysql连接权限设置成%,更改方法直接通过软件更改和命令行更改:
在mysql的数据库选择mysql这个数据库,里面有一个user表,进入表中有一个host字段将localhost值更改为%这个保存后,刷新或者重启MySQL服务都行。
在这里插入图片描述
最后的最后!在navicat中测试连接!
在这里插入图片描述
别提看到这个连接成功有多高兴了,折腾了两个晚上+一个下午
西湖的水,我的泪。。。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值