MySQL不需要密码就可以登录(Linux中) | 您所在的位置:网站首页 › linux登录密码输入不了怎么解决问题 › MySQL不需要密码就可以登录(Linux中) |
在安装完 MySQL 的时候发现,不用输入密码,都可以进入 MySQL ,研究半天,终于找到了解决方式。 第一步、在控制台输入(修改 mysqld.cnf 文件) sudo vim /etc/mysql/mysql.conf.d/mysqld.cnf进入到 mysqld.cnf 这个配置文件,然后在这个配置文件中的 [mysqld] 这一块中加入 skip-grant-tables 这句话,如下图所示 [mysqld] # * Basic Settings user = mysql pid-file = /var/run/mysqld/mysqld.pid socket = /var/run/mysqld/mysqld.sock port = 3306 basedir = /usr datadir = /var/lib/mysql tmpdir = /tmp lc-messages-dir = /usr/share/mysql skip-external-locking character-set-server=utf8 collation-server=utf8_general_ci skip-grant-tables # 增加这一句话 作用:可以跳过验证,不用密码登录进入 MySQL使用下面的指令,重启 MySQL 服务 service mysql restart 第二步、在控制台输入下面指令 mysql # 或者 mysql -u root # 或者 mysql -u root -p遇见输入密码的提示直接回车即可,进入 MySQL 后,分别执行下面三句话 use mysql; update user set authentication_string=password("你的密码") where user="root"; flush privileges;效果如下图所示: 再次在控制台输入 mysql -u root -p ,这个时候就得输入密码,才可以登录 MySQL 了。 如果此时还是不用输密码,请看第四步 第四步、如果此时还是不用输密码,那么就需要返回第三步,把注释掉的那条语句重新放开(就是删除#符号),重新进入 MySQL 中,执行下面的命令 use mysql; select user,plugin from user;效果如下图所示: 从图中可以看到出,错误原因是因为 root 的 plugin 字段是 auth_socket ,那我们改为 mysql_native_password 就行了。执行下面的命令: update user set authentication_string=password("你的密码") ,plugin='mysql_native_password' where user='root';再次执行 select user, plugin from user;我们能看到root用户的字段改成功了,如下图所示。 那么这个问题就完全解决了。 补充:auth_socket 验证插件的使用场景:auth_socket 这个插件验证方式有以下特点: 首先,这种验证方式不要求输入密码,即使输入了密码也不验证。这个特点让很多人觉得很不安全,实际仔细研究一下这种方式,发现还是相当安全的,因为它有另外两个限制;只能用 UNIX 的 socket 方式登陆,这就保证了只能本地登陆,用户在使用这种登陆方式时已经通过了操作系统的安全验证;操作系统的用户和 MySQL 数据库的用户名必须一致,例如你要登陆 MySQL 的 root 用户,必须用操作系统的 root 用户登陆。auth_socket 这个插件因为有这些特点,它很适合我们在系统投产前进行安装调试的时候使用,而且也有相当的安全性,因为系统投产前通常经常同时使用操作系统的 root 用户和 MySQL 的 root 用户。当我们在系统投产后,操作系统的 root 用户和 MySQL 的 root 用户就不能随便使用了。 在 [mysqld] 中添加下边的代码,也可以更改 MySQL 默认的身份认证插件 default_authentication_plugin=mysql_native_password |
今日新闻 |
推荐新闻 |
专题文章 |
CopyRight 2018-2019 实验室设备网 版权所有 |