• MySQL 8.0 安装后无需密码就能登录 root,且无法远程登录


    在 Ubuntu 上通过 apt install mysql-server 安装了 8.0 版本的 mysql 后,发现 root 用户在命令行中输入 mysql ,直接就能进入 mysql 的命令行界面;而且没有提示要更改默认的 root 密码,直接就能进行一系列操作。

    查看 /var/log/mysql/error.log ,看到有这样一条日志: root@localhost is created with an empty password ! Please consider switching off the–initialize-insecure option. 可以看到,日志提示 root 账户没有创建密码。

    mysql.user数据表中存放了用户信息、用户密码、权限分配等信息。通过select user,plugin,authentication_string from mysql.user where user=‘root’;命令可以查看到,root的plugin选项为auth_socket,表示只要当前系统在root用户下,那么就能直接登录,不需要密码。后面的authentication_string为空,表示root用户也没有密码。

    在这里插入图片描述
    此时,哪怕修改了 /etc/mysql/mysql.conf.d/mysqld.cnf 配置文件中的 bind-address = 0.0.0.0,再将mysql.user表中的root用户的host从localhost改为%,也没法让远程用户通过Navicat等软件使用root用户直接登录数据库。

    解决方法之一,就是先通过systemctl stop mysql命令停止mysql服务,然后通过rm -rf /var/lib/mysql/*命令删除默认生成的数据库文件,最后执行mysqld --initialize --user=root命令,即可为root用户生成一个随机的密码,这个密码能在/var/log/mysql/error.log文件中看到。使用这个生成的密码登录数据库后,此时我们无法做任何操作,只能通过alter user ‘root’@‘localhost’ identified by '123456’命令先将root密码修改一下,然后才能做下一步的操作。

    如果要允许root用户远程登录(不推荐),可以使用update mysql.user set host=‘%’ where user=‘root’;

    通过flush privileges;命令刷新权限。此时,通过select user,host,plugin,authentication_string from mysql.user;命令查看表项,结果如下:

    在这里插入图片描述
    可以看到,此时root用户能够从任意位置(%)登录到数据库中。

    参考资料:https://blog.csdn.net/feinifi/article/details/107414470

  • 相关阅读:
    网络安全(黑客)自学
    vim,emacs,verilog-mode这几个到底是啥关系?
    染色法判断二分图
    iOS 组件化-发布组件到远程仓库
    源码编译OpenCV 启用cuda 加速
    快速解决 adb server version doesn‘t match this client
    华清远见上海中心22071班
    新开源HTML5单文件网页版ACME客户端,可在线申请Let's Encrypt、ZeroSSL免费HTTPS多域名通配符泛域名SSL/TLS证书(RSA/ECC/ECDSA)
    linuex服务器中如何安装mysql数据库(一次性完成,包含远程连接)
    腾讯混元助手使用指南
  • 原文地址:https://blog.csdn.net/qq_25985027/article/details/126720842