[Warning] root@localhost is created with an empty password ! Please consider switching off the解决办法

2023-05-16

    如题所示,当我们在ubuntu1804中,通过默认的源安装数据库mysql之后,直接就可以通过mysql -uroot就可以登录了,因为他默认生成的密码是空的。

    如下所示,ubuntu1804系统自带的默认mysql源就是5.7.30版本:

    

    如果要安装5.7版本的mysql,无需考虑其他, 直接apt install mysql-server就完了:

    

    安装过程,会将所需的依赖全部安装上,包括libaio1,无需再手动安装。安装完成即启动成功,生成的密码是空的。

    

    进入/var/log/mysql,查看error.log文件,发现password关键字这里的提示信息就是本文的标题部分:

     

    我们在命令行,可以直接输入mysql -uroot即可进入数据库中,并且不用更改root的密码就可以进行一些列的操作。

     

    查询mysql数据库中的user表,查看关键信息:

            我们发现root用户的plugin是使用的auth_socket,就是说,只要系统切换到root用户下,可以直接登录。如果我们在其他用户比如test,那么我们无法登录,更加无法远程登录。

    如何解决这个空密码的问题呢, 我们需要更改plugin为mysql_native_password,顺便更改authentication_string这个字段,也就是密码字段。更改了之后,不要忘记flush privileges,就是将权限写入数据库,而不是留在会话中。

mysql> update user set plugin='mysql_native_password',authentication_string=password('root') where user='root';     
Query OK, 1 row affected, 1 warning (0.00 sec)
Rows matched: 1  Changed: 1  Warnings: 1

mysql> select user,plugin,authentication_string from user;
+------------------+-----------------------+-------------------------------------------+
| user             | plugin                | authentication_string                     |
+------------------+-----------------------+-------------------------------------------+
| root             | mysql_native_password | *81F5E21E35407D884A6CD4A731AEBFB6AF209E1B |
| mysql.session    | mysql_native_password | *THISISNOTAVALIDPASSWORDTHATCANBEUSEDHERE |
| mysql.sys        | mysql_native_password | *THISISNOTAVALIDPASSWORDTHATCANBEUSEDHERE |
| debian-sys-maint | mysql_native_password | *EABE427EFF3FACDFC5EDB2A3892AB57D77645CF6 |
+------------------+-----------------------+-------------------------------------------+
4 rows in set (0.00 sec)

mysql> flush privileges;
Query OK, 0 rows affected (0.01 sec)

mysql> exit
Bye

     最后,我们再次使用空密码登录,发现就失效了,只能使用密码登录的方式了:

root@huali:/var/log/mysql# mysql -uroot
ERROR 1045 (28000): Access denied for user 'root'@'localhost' (using password: NO)
root@huali:/var/log/mysql# mysql -uroot -p
Enter password: 
ERROR 1045 (28000): Access denied for user 'root'@'localhost' (using password: NO)
root@huali:/var/log/mysql# mysql -uroot -proot
mysql: [Warning] Using a password on the command line interface can be insecure.
Welcome to the MySQL monitor.  Commands end with ; or \g.
Your MySQL connection id is 6
Server version: 5.7.30-0ubuntu0.18.04.1 (Ubuntu)

Copyright (c) 2000, 2020, Oracle and/or its affiliates. All rights reserved.

Oracle is a registered trademark of Oracle Corporation and/or its
affiliates. Other names may be trademarks of their respective
owners.

Type 'help;' or '\h' for help. Type '\c' to clear the current input statement.

mysql> 

     温馨提示:如果需要远程登录,还记得修改user表中的user=root的host为%,另外mysql配置文件(/etc/mysql/mysql.cnf.d/mysqld.cnf)中bind-adress也需要修改为0.0.0.0,如下所示:

    

    另外,解决本文警告的问题,也就是关于空密码的问题,还有一种办法,就是停止mysql服务,service mysql stop,然后删除默认生成的数据库文件:rm -rf /var/lib/mysql/*, 最后执行mysqld --initialize --user=root,即可生成一个随机的密码。我们使用随机密码登录数据库,然后无法做任何操作,只能先修改密码,这时候通过alter user 'root'@'localhost' identified by 'root'即可。

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

[Warning] root@localhost is created with an empty password ! Please consider switching off the解决办法 的相关文章

  • 如何在 Windows 桌面上运行 localhost 的移动设备上运行我的 Angular 网站 [重复]

    这个问题在这里已经有答案了 我从超级用户的这个问题和答案中知道在 Android 设备上无法访问桌面上本地主机上运行的网站 https superuser com questions 1193168 site running on loca
  • 我应该将跨域 XML 放在 Tomcat 中的什么位置?

    我有一个跨域策略文件 希望添加到我拥有的 Tomcat 服务器中 如果tomcat是localhost 8080并且安装在 usr local tomcat 我应该放置此策略文件的根文件夹在哪里 将您的跨域策略放入ROOT webapp f
  • 如何检测是否在本地主机上运行

    我有一个 PHP 脚本 我想检测用户是否在本地计算机上运行 无法通过 Internet 访问 目前我检查服务器地址为 127 0 0 1 这是最佳实践还是有更好的方法 本地主机始终转换为环回 IP 地址127 0 0 1在 IPv4 中 或
  • 无法打开输入文件:localhost:8080

    在 Windows 上 要从命令提示符运行 PHP Web 服务器 我键入 php s localhost 80800 t public 我收到此错误 无法打开输入文件 localhost 8080 And yet cmd php test
  • 如何在MySQL 8.0.11中重置root密码?

    我实际上丢失了 root 密码 我需要更改它 我按照以下步骤操作 步骤 1 停止 MySQL 服务器进程 步骤 2 使用以下命令启动 MySQL mysqld 服务器 守护进程 skip grant tables 选项 这样就不会提示输入密
  • 放弃root权限

    我有一个以 root 身份启动的守护进程 因此它可以绑定到低端口 出于安全原因 初始化后我非常希望它放弃 root 权限 谁能指点我已知正确C 中的一段代码可以做到这一点 我阅读了手册页 研究了不同应用程序中的各种实现 它们都是不同的 其中
  • PHP is_file 和服务器根相对路径

    请问如何使用 is file 和 folder file jpg 这样的路径 谢谢你 如果路径以 开头 则表示该路径是绝对路径 当路径是相对路径时 即不以 开头 则采用相对于 php 脚本的路径 如果您希望 folder file jpg
  • 如何使用 Jackson 重命名 JSON 序列化中的根密钥

    我正在使用 Jackson 对对象列表进行 JSON 序列化 这是我得到的 ArrayList id 1 name test name 但我想要这个 rootname id 1 name test name ie showing the s
  • python selenium webdriver 问题(selenium.common.exceptions.WebDriverException:消息:“无法加载配置文件。配置文件目录:)

    我正在使用 Mac OS X 10 8 3 selenium 2 32 0 python 2 7 Firefox 版本 20 并且在运行 python 绑定时收到此错误 selenium common exceptions WebDrive
  • 为什么 http://localhost/ 不使用 WAMP 加载任何内容?

    我最近尝试安装 WAMP 但发现没有页面加载 它还有一个橙色的 W 标志 如果这有什么意义的话 它确实说 托盘图标 WAMP服务器已上线尽管 我也做了一些研究 发现 Skype 可能会引起问题 所以我删除了使用端口 80 和 443 作为传
  • 从手机访问本地主机[关闭]

    这个问题不太可能对任何未来的访客有帮助 它只与一个较小的地理区域 一个特定的时间点或一个非常狭窄的情况相关 通常不适用于全世界的互联网受众 为了帮助使这个问题更广泛地适用 访问帮助中心 help reopen questions 我正在使用
  • Android Root 执行 su 带参数

    我在使用参数执行 su 时遇到问题 包含空格 我的 Command java 看起来像这样 public class Command Process process public String executeCommand String c
  • 越狱后,iOS应用程序会以root权限运行吗?

    一旦 iOS 设备越狱 我们就可以构建越狱应用程序 使用 theos 并将其安装在 Applications预加载应用程序以 root 权限运行的目录 如果应用程序是使用 Xcode 构建的 一旦安装 它就会进入 private var m
  • localhost/test.php 不返回任何内容

    我正在遵循教程构建一个网络应用程序 我创建了一个简单的test php网络空间中的文件 var www html 问题是当我输入localhost test php在浏览器地址窗口中 它返回一个空页面 我试过localhost php in
  • 我无法在本地主机上播放 .mp3 文件

    我正在使用 HTML jQuery 和 XML 制作音乐播放器 XML 文件包含所有歌曲的名称及其路径 我无法在本地访问 XML 文件 因为 Chrome 不允许这样做 所以我尝试在本地主机上运行它 但本地主机不允许我播放 mp3 我在本地
  • localhost 拒绝在 chrome mac 中连接

    我正在使用 webpack dev server 使用此命令运行服务器 npm run dev 当我使用npm start 它工作得很好 但不想这样做 因为它是为了生产 到目前为止我的服务器运行良好http 本地主机 3000 http l
  • 删除 Python 中某些操作的 root 权限

    在我的 Python 脚本中 我执行了一些需要 root 权限的操作 我还创建并写入文件 我不想由 root 独占所有 而是由运行我的脚本的用户独占所有 通常 我使用以下命令运行脚本sudo 有办法做到上述吗 您可以使用以下方式在 uid
  • 离线时 OSX Lion 上的 InetAddress.getLocalHost() 分辨率

    在脱机工作 即未连接到互联网 时 是否有人在使用 OSX Lion 的 Java 中遇到 Java 的 InetAddress getLocalHost 解析问题 看来 localhost 127 0 0 1 根本没有解析 Caused b
  • 从 NodeJS 运行 localhost 服务器时出现 ECONNREFUSED

    我在本地计算机上启动并运行了一个 NodeJS 服务器 该服务器正在侦听端口 50000 从也在我的本地计算机上运行的另一台服务器 我需要向该服务器发出一个简单的 GET 请求 但我得到的只是 ECONNREFUSED 错误 Error c
  • MAMP 本地主机不工作

    我的 MacBook Pro 13 英寸运行的是 OS X 10 8 2 我已经下载了 MAMP 2 1 4 我想运行 MAMP 程序 成功连接到服务器后 我尝试按 打开起始页 它会将我带到 Google Chrome 浏览器 并显示一个页

随机推荐