• 【全栈开发指南】Mysql8 开启远程登录(docker-compose安装 )


      为了安全考虑MySQL默认不开启远程登录。在生产环境中,MySQL通常只需要在本地主机上运行,而不需要允许远程主机连接。如果启用了远程登录,则存在潜在的安全风险。黑客或恶意用户可以利用未经授权的登录尝试来访问数据库,从而威胁数据的安全性。因此,为了保护MySQL服务器免受未经授权的访问和攻击,MySQL默认不允许远程登录,需要用户手动进行配置和授权。

    一、登录并配置mysql

    1. 登录容器
    docker exec -it 53e85183fdc0 /bin/bash
    
    • 1
    1. 编辑文件
    vim   /etc/mysql/conf.d/docker.cnf
    
    • 1
    1. 增加 skip-grant-tables
    skip-grant-tables
    
    • 1
    1. 重启容器
    docker-compose -f docker-compose.yml restart
    
    • 1
    1. mysql8新增用户,已不支持GRANT ALL PRIVILEGES ON . TO ‘root’@‘%’
    create user 'admin'@'%' identified by '数据库密码';
    
    GRANT ALL PRIVILEGES ON *.* TO 'admin'@'%';
    
    flush privileges;
    
    ALTER USER 'admin'@'%' IDENTIFIED WITH mysql_native_password BY '数据库密码';
    
    flush privileges;
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9

    二、解决group by问题

    java.sql.SQLSyntaxErrorException: Expression #14 of SELECT list is not in GROUP BY clause and contains nonaggregated column 'yxkt.provinceDistrict.name' which is not functionally dependent on columns in GROUP BY clause; this is incompatible with sql_mode=only_full_group_by
    
    • 1
    1. 修改mysql配置文件 /etc/mysql/conf.d/my.cnf
    vim  /etc/mysql/conf.d/my.cnf
    
    • 1
    sql_mode=STRICT_TRANS_TABLES,NO_ZERO_IN_DATE,NO_ZERO_DATE,ERROR_FOR_DIVISION_BY_ZERO,NO_AUTO_CREATE_USER,NO_ENGINE_SUBSTITUTION
    
    • 1
    1. 重启mysql
     docker restart [mysql容器名称或ID]
    
    • 1
      开启MySQL远程访问前,需要注意以下几点:
    1. 确认MySQL已经正确安装和配置,且能够正常运行。

    2. 确认MySQL所在的主机已经开放了MySQL的端口号,一般默认是3306端口。

    3. 配置MySQL的远程登录用户,需要创建一个允许远程访问MySQL的用户,并且为该用户授权相应的数据库访问权限。

    4. 防火墙设置,需要开启服务器3306端口防火墙规则。

    5. 修改MySQL配置文件my.cnf,找到bind-address选项,将其设置为0.0.0.0或者注释掉该选项。

    6. 确认远程主机的IP地址和MySQL服务器能够互相连通。

    7. 确认远程主机的MySQL客户端已经正确安装,并且能够正确连接MySQL服务器。

    8. 防止被攻击,建议只允许指定IP地址访问MySQL。

      以上是开启MySQL远程访问的注意事项。在修改MySQL配置文件时,务必谨慎操作,一旦配置不正确,将会导致MySQL的无法启动或者无法正常工作,造成数据丢失或损坏,请务必备份好数据后再进行操作。
  • 相关阅读:
    使用java.util.Timer实现定时任务,详解Thread.sleep() in a loop, probably busy-waiting问题
    上门预约洗鞋小程序开发;
    基于android的网络考试系统APP(ssm+uinapp+Mysql)
    技术分享| 小程序实现音视频通话
    JS知识点,持续更新
    【牛客网-公司真题-前端入门篇】——奇安信春招笔试-前端-卷2
    火热报名中|墨菲安全发起首届 OSCS 软件供应链安全技术论坛
    使用Scapy框架分析HTTP流量
    ESP8266制作的1.44寸TFT显示屏太空人天气时钟(st7735)(增加农历显示)(抄作业)
    【小白教程】网课查题公众号搭建教程-附带题库查题接口
  • 原文地址:https://blog.csdn.net/wmz1932/article/details/131666302