Ubuntu 安装MySQL,修改root密码

当在Ubuntu上使用apt命令安装MySQL后忘记设置root密码,可以通过编辑配置文件添加skip-grant-tables选项实现免密登录,然后使用SQL命令修改root密码。首先在/etc/mysql/mysql.conf.d/mysqld.cnf文件中添加skip-grant-tables,重启MySQL服务。接着,无密登录MySQL,使用`use mysql`切换到mysql库,通过`ALTER USER 'root'@'localhost' IDENTIFIED BY '新密码';`命令修改密码。最后,移除skip-grant-tables,再次重启服务使更改生效。若遇到错误,可能需要检查或更新root用户的plugin。


apt命令安装MySQL, 过程中没有设置root密码。 安装完成后,无法登录root,因此修改root密码。

1、设置免密登录

修改文件/etc/mysql/mysql.conf.d/mysqld.cnf,在[mysqld]这一块中加入skip-grant-tables这句话。

修改后重启服务生效,systemctl restart mysql.service

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

[mysqld]
#
# * Basic Settings
#
user            = mysql
...
max_binlog_size   = 100M
# binlog_do_db          = include_database_name
# binlog_ignore_db      = include_database_name
skip-grant-tables

2、登录root用户mysql -uroot -p,这个时候直接回车,不要密码。

3、修改root密码

use mysql;

ALTER user 'root'@'localhost' IDENTIFIED BY '123456';

flush privileges;

 

修改完后,退出就能用root新的密码登录了。 然后打开/etc/mysql/mysql.conf.d/mysqld.cnf文件把skip-grant-tables删除。修改后重启服务生效,systemctl restart mysql.service。

PS:

步骤3,如果碰到以下报错,则先执行flush privileges;命令。

mysql> ALTER user 'root'@'localhost' IDENTIFIED BY '123456';
ERROR 1290 (HY000): The MySQL server is running with the --skip-grant-tables option so it cannot execute this statement

如果碰到以下报错。

ALTER user 'root'@'localhost' IDENTIFIED BY '123456';
ERROR 1524 (HY000): Plugin 'auth_socket' is not loaded

先select user,plugin from user;查看plugin。 然后修改和其他的一样,update user set plugin='caching_sha2_password' where User ='root';

 再执行flush privileges;命令。

处理了错误后,在执行步骤3.

### 如何在 Ubuntu安装 MySQL修改 Root 用户密码 #### 安装 MySQL 要在 Ubuntu安装 MySQL,可以按照以下方法执行: 1. 更新包管理器并安装最新版本的 MySQL: ```bash sudo apt update && sudo apt install mysql-server -y ``` 2. 确认 MySQL 服务已启动: ```bash systemctl status mysql.service ``` 如果未运行,则可以通过 `sudo systemctl start mysql` 启动。 --- #### 修改 Root 密码的具体步骤 以下是基于不同引用中的描述整理出来的完整流程[^1][^2]: 1. **登录到 MySQL 数据库** 使用操作系统上的 root 账户或者通过默认配置文件中指定的维护账户登录数据库。如果存在默认用户(如 debian-sys-maint),则可以直接使用它来访问 MySQL。 ```bash mysql -u debian-sys-maint -p ``` 输入对应的密码完成验证。 2. **切换至 MySQL 数据库** 进入 MySQL 的元数据存储区域以便于编辑权限表单。 ```sql USE mysql; SHOW COLUMNS FROM USER; ``` 3. **更新认证字符串字段** 找到目标用户的记录,并设置新的加密方式以及更改其密码哈希值。 ```sql UPDATE user SET authentication_string=PASSWORD('新密码') WHERE User='root'; FLUSH PRIVILEGES; -- 刷新授权缓存使改动生效 ``` 4. **调整插件类型 (可选)** 对某些环境而言可能还需要改变根账号所使用的身份验证机制为传统模式而非现代更安全但兼容性较差的方式之一即 native password 插件形式。 ```sql UPDATE user SET plugin="mysql_native_password" WHERE User='root'; SELECT user,plugin FROM user; ``` 5. **重启 MySQL 服务** 应用上述变更之后建议重新加载守护进程以确保一切正常运作无误。 ```bash sudo systemctl restart mysql ``` 6. **测试连接** 尝试利用刚刚设定的新凭证再次尝试登陆确认成功与否。 ```bash mysql -uroot -p 新密码 ``` 对于特定情况下的额外注意事项比如绑定地址放开远程访问等问题也可参照相关文档说明处理[^4]. --- ```python # Python 示例脚本用于自动化部分过程(仅作演示用途) import pymysql.cursors connection = pymysql.connect(host='localhost', user='debian-sys-maint', passwd='your_maint_pass_here') try: with connection.cursor() as cursor: sql_update_pwd = """UPDATE mysql.user SET authentication_string=PASSWORD(%s), plugin=%s WHERE User=%s""" val = ("new_root_passwd", "mysql_native_password","root") cursor.execute(sql_update_pwd,val) finally: connection.commit() connection.close() print("Root Password Updated Successfully!") ``` ---
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值