MySQL` 启动时会监听某个端口,但是服务尚未完全启动。
背景
MySQL在启动的时候会进行第一次初始化数据库,MySQL完全启动之后会进行第二次初始化数据库。
首次初始化数据库时,使用--skip-(该选项表示禁用MySQL的TCP/IP连接方式)启动MySQL进行初始化,初始化完成后关闭--skip-选项,并重启MySQL。
第二次初始化数据库时,将设置root密码。
如何判断MySQL是否已经完全启动
尝试主动连接MySQL,连接成功表示服务已经完全启动。
mysql -hlocalhost -P3306 -uroot
事故
由于上述判断方法使用了连接数据库的方式,但是第一次只禁止了MySQL的TCP/IP连接方式,因此在第一次数据库初始化完成之前可能已经进行了第二次数据库初始化,第二次数据库初始化在第一次数据库初始化之前就设置了root密码,导致第一次初始化无法连接数据库,最终导致TCP/IP连接方式没有启用,应用程序无法连接数据库。
第一次修改
使用-h127.0.0.1连接数据库
mysql -h127.0.01 -P3306 -uroot
但由于root用户的主机设置不允许127.0.0.1连接,导致第一次修改失败。
第二次修订
wait-for-it.sh 127.0.0.1:3306 --timeout=300
mysql -hlocalhost -P3306 -uroot
wait-for-it.sh用于检测127.0.0.1:3306是否处于监听状态,如果是,说明第一次数据库初始化完成,然后尝试连接数据库。
扫一扫在手机端查看
我们凭借多年的网站建设经验,坚持以“帮助中小企业实现网络营销化”为宗旨,累计为4000多家客户提供品质建站服务,得到了客户的一致好评。如果您有网站建设、网站改版、域名注册、主机空间、手机网站建设、网站备案等方面的需求,请立即点击咨询我们或拨打咨询热线: 13761152229,我们会详细为你一一解答你心中的疑难。


客服1