美文网首页
踩坑实录:vbox虚拟机centos7安装mysql8,然后从w

踩坑实录:vbox虚拟机centos7安装mysql8,然后从w

作者: zergNeptune | 来源:发表于2020-02-14 07:30 被阅读0次

    1. 装mysql

    司木 - CentOS(linux) 下MySQL8.0.11的yum安装
    就按照连接里面的做就行。简单来说就是不要装最新的el8,装老一个版本的。el8安装过程会一大堆软件包需求blablabla错误。这次折腾给我的最大教训就是啥都别用最新版的,尽量用相对老一版的稳定版。

    如果你和我一样觉得mysql8密码太烦想搞个简单的,那么应该需要改一下密码策略:

    set global validate_password.policy=0;
    set global validate_password.check_user_name=0;
    set global validate_password.length=1;
    set global validate_password.mixed_case_count=0;
    set global validate_password.number_count=0;
    set global validate_password.special_char_count=0;
    flush privileges;
    

    查看并确认权限:

    SHOW VARIABLES LIKE 'validate_password%';
    

    参考:

    Coder-Qian - Mysql 8.0.1修改密码策略

    2. 修改虚拟机配置从而使得主机能访问虚拟机的数据库。

    这里试下来,一个比较靠谱的方法就是使用NAT,然后把虚拟机的端口转发。这样就可以在主机用localhost访问了。

    具体请看: YYlxid - win下连接virtualbox中linux虚拟机的mysql

    这里有一个小细节。你要从主机访问虚拟机,那为了方便使用各种工具进行访问和操作,你主机一般都是装了mysql一套的。这样的话如果你不特别进行配置,那么主机和虚拟机的端口都是3306。这样的话你如果从主机访问localhost:3306,走的就是主机的mysql而非虚拟机的。所以应该在虚拟机设置的端口转发那里,把主机的端口改一个不一样的。比如我就改为了33306。

    3. 修改mysql配置文件和linux防火墙

    配置完了NAT和端口转发,还需要改一下虚拟机里的mysql配置和防火墙配置从而让外部能访问进来。首先改下配置文件,比如用vim,那么就打开:

    vim /etc/my.cnf
    

    在最底下加一行:

    bind-address=127.0.0.1
    

    其实bind-address这个值还有两种填方法:

    bind-address=0.0.0.0
    

    或者:

    bind-address={你虚拟机的实际ip}
    

    要查看虚拟机的实际ip,可以敲ifconfig,或者GNOME右上角点网络图标打开设置也可以看到。

    搞定以后重启mysqld服务:

    systemctl restart mysqld
    

    然后修改防火墙配置,这里注意下在centos7里不再是iptables,而是firewall-cmd了:

    firewall-cmd --zone=public --add-port=3306/tcp --permanent
    

    成功了应该跳个success。

    然后重启防火墙:

    firewall-cmd --reload
    

    参考:

    How to Allow Remote Connections to MySQL Database on RHEL/CentOS

    Centos 7 save iptables settings - serverfault

    至此,配置就完成了。在虚拟机启动的情况下,在主机用navicat, datagrip等工具访问localhost:33306(如果你和我一样把主机端口映射为33306的话),就可以正常使用了。

    4. 使用vscode插件访问虚拟机mysql可能遇到这样一个问题。

    我这边还进一步进行了这样一个折腾,就是使用vscode连接数据库。那么这里就要装些mysql插件了。具体请参考:sigmarising - 使用 Visual Studio Code 链接 MySql 数据库并进行查询

    如果你和我一样,修改过密码策略然后用了个简单密码,那么你在使用vscode插件登录的时候,可能会报这个错:

    ER_NOT_SUPPORTED_AUTH_MODE: Client does not support authentication protocol requested by server; consider upgrading Mysql client
    

    但是用命令行和其它工具明明可以连接啊,为什么呢?这个过程复现太折腾了,我盲猜是这个原因:在虚拟机里的mysql改过了策略,但是在主机的mysql没改。所以解决方法,就是在命令行,用账密登录,然后再把上面的修改密码策略的操作搞一遍(没错,尽管你确实是用弱密码登录成功了,但是你在修改的过程中就会发现策略还是要改)。这样操作完,再用vscode插件就可以登录并操作了。阿西,终于搞完了。

    相关文章

      网友评论

          本文标题:踩坑实录:vbox虚拟机centos7安装mysql8,然后从w

          本文链接:https://www.haomeiwen.com/subject/uoorfhtx.html