专栏首页LaravelCodeUbuntu 下如何修改 MySQL 密码

Ubuntu 下如何修改 MySQL 密码

Ubuntu 下如何修改 MySQL 密码呢?搜集大致有以下几种方式、应该是比较常用的方法

登录控制台

mysql -uroot -p  

输入密码,进入 MySQL

use mysql;
update user set password=password('123456') where user='root' and host='localhost';

你会发现并没有成功,会报出如下错误

ERROR 1054 (42S22): Unknown column 'password' in 'field list'

就是说字段 password并不存在,,原来 MySQL5.7 以后并没有 password 字段了 使用 show create table user 查看

user  | CREATE TABLE `user` (
  `Host` char(60) COLLATE utf8_bin NOT NULL DEFAULT '',
  `User` char(32) COLLATE utf8_bin NOT NULL DEFAULT '',
  `Select_priv` enum('N','Y') CHARACTER SET utf8 NOT NULL DEFAULT 'N',
  `Insert_priv` enum('N','Y') CHARACTER SET utf8 NOT NULL DEFAULT 'N',
  `Update_priv` enum('N','Y') CHARACTER SET utf8 NOT NULL DEFAULT 'N',
  `Delete_priv` enum('N','Y') CHARACTER SET utf8 NOT NULL DEFAULT 'N',
  `Create_priv` enum('N','Y') CHARACTER SET utf8 NOT NULL DEFAULT 'N',
  `Drop_priv` enum('N','Y') CHARACTER SET utf8 NOT NULL DEFAULT 'N',
  `Reload_priv` enum('N','Y') CHARACTER SET utf8 NOT NULL DEFAULT 'N',
  `Shutdown_priv` enum('N','Y') CHARACTER SET utf8 NOT NULL DEFAULT 'N',
  `Process_priv` enum('N','Y') CHARACTER SET utf8 NOT NULL DEFAULT 'N',
  `File_priv` enum('N','Y') CHARACTER SET utf8 NOT NULL DEFAULT 'N',
  `Grant_priv` enum('N','Y') CHARACTER SET utf8 NOT NULL DEFAULT 'N',
  `References_priv` enum('N','Y') CHARACTER SET utf8 NOT NULL DEFAULT 'N',
  `Index_priv` enum('N','Y') CHARACTER SET utf8 NOT NULL DEFAULT 'N',
  `Alter_priv` enum('N','Y') CHARACTER SET utf8 NOT NULL DEFAULT 'N',
  `Show_db_priv` enum('N','Y') CHARACTER SET utf8 NOT NULL DEFAULT 'N',
  `Super_priv` enum('N','Y') CHARACTER SET utf8 NOT NULL DEFAULT 'N',
  `Create_tmp_table_priv` enum('N','Y') CHARACTER SET utf8 NOT NULL DEFAULT 'N',
  `Lock_tables_priv` enum('N','Y') CHARACTER SET utf8 NOT NULL DEFAULT 'N',
  `Execute_priv` enum('N','Y') CHARACTER SET utf8 NOT NULL DEFAULT 'N',
  `Repl_slave_priv` enum('N','Y') CHARACTER SET utf8 NOT NULL DEFAULT 'N',
  `Repl_client_priv` enum('N','Y') CHARACTER SET utf8 NOT NULL DEFAULT 'N',
  `Create_view_priv` enum('N','Y') CHARACTER SET utf8 NOT NULL DEFAULT 'N',
  `Show_view_priv` enum('N','Y') CHARACTER SET utf8 NOT NULL DEFAULT 'N',
  `Create_routine_priv` enum('N','Y') CHARACTER SET utf8 NOT NULL DEFAULT 'N',
  `Alter_routine_priv` enum('N','Y') CHARACTER SET utf8 NOT NULL DEFAULT 'N',
  `Create_user_priv` enum('N','Y') CHARACTER SET utf8 NOT NULL DEFAULT 'N',
  `Event_priv` enum('N','Y') CHARACTER SET utf8 NOT NULL DEFAULT 'N',
  `Trigger_priv` enum('N','Y') CHARACTER SET utf8 NOT NULL DEFAULT 'N',
  `Create_tablespace_priv` enum('N','Y') CHARACTER SET utf8 NOT NULL DEFAULT 'N',
  `ssl_type` enum('','ANY','X509','SPECIFIED') CHARACTER SET utf8 NOT NULL DEFAULT '',
  `ssl_cipher` blob NOT NULL,
  `x509_issuer` blob NOT NULL,
  `x509_subject` blob NOT NULL,
  `max_questions` int(11) unsigned NOT NULL DEFAULT '0',
  `max_updates` int(11) unsigned NOT NULL DEFAULT '0',
  `max_connections` int(11) unsigned NOT NULL DEFAULT '0',
  `max_user_connections` int(11) unsigned NOT NULL DEFAULT '0',
  `plugin` char(64) COLLATE utf8_bin NOT NULL DEFAULT 'mysql_native_password',
  `authentication_string` text COLLATE utf8_bin,
  `password_expired` enum('N','Y') CHARACTER SET utf8 NOT NULL DEFAULT 'N',
  `password_last_changed` timestamp NULL DEFAULT NULL,
  `password_lifetime` smallint(5) unsigned DEFAULT NULL,
  `account_locked` enum('N','Y') CHARACTER SET utf8 NOT NULL DEFAULT 'N',
  PRIMARY KEY (`Host`,`User`)
) ENGINE=MyISAM DEFAULT CHARSET=utf8 COLLATE=utf8_bin COMMENT='Users and global privileges'

新版的 MySQL 使用 authentication_string 来代替 password ,ok,既然知道了字段,那么接下来就好修改密码了

update user set authentication_string=PASSWORD("这里输入你要改的密码") where user='root';

flush privileges;

ok,这样就成功修改了 MySQL 的密码了。

上面的方法前提是你记得原来的密码 可以登录到 MySQL 中:但是如果忘记密码怎么修改呢?

MySQL 5.7 忘记密码、重新修改密码

编辑 /etc/mysql/mysql.conf.d/mysqld.cnf 文件在[mysqld]区域添加 skip-grant-tables 配置

sudo vim /etc/mysql/mysql.conf.d/mysqld.cnf;

之后重启 MySQL 服务

sudo service mysql restart

接下来就可以免密码登录到 MySQL 中了.

mysql -uroot -p 
# 出现输入密码、直接回车即可

接下来就可以修改密码了,其实方法和上面的一样

use mysql;
update user set authentication_string=PASSWORD("这里输入你要改的密码") where user='root';

flush privileges;

修改完记得将 skip-grant-tables 去掉。之后重启 MySQL 服务即可。

MySQL 8 修改密码

同理 编辑配置文件 添加 skip-grant-tables ,重启 MySQL 将密码置空

use mysql;
update user set authentication_string='' where user='root';
exit;

ALTER USER "root"@"localhost" IDENTIFIED  BY "你的新密码";

skip-grant-tables 去掉,重启 MySQL。

mysql -uroot -p; 
# 出现输入密码、直接回车即可
use mysql;
ALTER USER "root"@"localhost" IDENTIFIED  BY "你的新密码";

MySQL 8 ,密码规则使用强校验,密码过于简单可能会导致报错。

本文参与腾讯云自媒体分享计划,欢迎正在阅读的你也加入,一起分享。

我来说两句

0 条评论
登录 后参与评论

相关文章

  • Mac 基于Python3.7 安装PySpider

    PySpider 是国人 binux 编写的强大的网络爬虫框架,它带有强大的 WebUI、脚本编辑器、任务监控器、项目管理器以及结果处理器,同时它支持多种数据库...

    hedeqiang
  • Mac 下安装 Tesserocr

    今天在 Mac 上安装Tesserocr 稀里糊涂报一堆错误,接下来就说说遇到的各种问题

    hedeqiang
  • Laravel 中使用 DingoAPI

    打开 composer.json 手动添加 手动添加 "dingo/api": "2.0.0-alpha2"

    hedeqiang
  • MySQL user表被删除了怎么办

    技术交流群总是能带来很多实际生产环境遇到的问题,例如,近期就有人遇到user表内容被清空的情况。如果发生了此情况,千万不要慌,更不能隐瞒问题(这位朋友就比较惨,...

    July
  • 3D 图形学基础 (上)

    本文主要针对一些对3D有兴趣的同学,普及图形学知识,不涉及深入的技术探讨和样例介绍。对于不是从事相关开发的同学也能了解相关的知识。

    serena
  • Basemap系列教程:3D

    尽管很多人不喜欢3D地图,但是仍可以使用 Basemap 和 matplotlib mplot3d [注1] 工具绘制3D地图。

    bugsuse
  • 通过欧拉计划学习Rust编程(第13~16题)

    最近想学习Libra数字货币的MOVE语言,发现它是用Rust编写的,所以先补一下Rust的基础知识。学习了一段时间,发现Rust的学习曲线非常陡峭,不过仍有快...

    申龙斌
  • 通过欧拉计划学习Rust编程(第13~16题)

    最近想学习Libra数字货币的MOVE语言,发现它是用Rust编写的,所以先补一下Rust的基础知识。学习了一段时间,发现Rust的学习曲线非常陡峭,不过仍有快...

    MikeLoveRust
  • 2019-03-27 高效学习,快速变现:不走弯路的五大学习策略

    Seaborn Lee,一名会在 B 站直播写代码,会玩杂耍球、弹 Ukulele、极限健身、跑步、写段子、画画、翻译、写作、演讲、培训的程序员。喜欢用编程实现...

    Albert陈凯
  • python基础类型(一):字符串和列表

    注意到最后三个的单双引号是嵌套使用的,但是最后一个的使用方法是错误的,因为当我们混合使用两种引号时必须有一种用来划分字符串的边界,即在两边的引号不能出现在字符串...

    渔父歌

扫码关注云+社区

领取腾讯云代金券