linux 中的mysql修改密码及其权限

本文详细介绍了在已知和未知原密码情况下修改MySQL数据库root用户密码的方法,包括使用mysqladmin和直接登录数据库更新password字段。同时,针对修改后可能出现的登录权限问题,提供了具体的解决方案。

修改的用户都以root为列。

一、知道原来的myql数据库的root密码;

①: 在终端命令行输入 mysqladmin -u root -p password "新密码" 回车 ,Enter password: 【输入原来的旧密码】
②: 登录mysql系统修改, mysql -uroot -p 回车 Enter password: 【输入原来的密码】

mysql>use mysql;

mysql> update user set password=password("新密码") where user='root';        【密码注意大小写】

mysql> flush privileges;

mysql> exit;      

然后使用刚才输入的新密码即可登录。

二、不知道原来的myql的root的密码;
首先,你必须要有操作系统的root权限了。要是连系统的root权限都没有的话,先考虑root系统再走下面的步骤。 类似于安全模式登录系统。

需要先停止mysql服务,这里分两种情况,一种可以用service mysqld stop,

另外一种是/etc/init.d/mysqld stop

当提示mysql已停止后进行下一步操作   Shutting down MySQL. SUCCESS!

在终端命令行输入

mysqld_safe --skip-grant-tables &         【登录mysql系统】

输入mysql登录mysql系统

mysql> use mysql;

mysql> UPDATE user SET password=password("新密码") WHERE user='root';      【密码注意大小写】

mysql> flush privileges;

mysql> exit;

重新启动mysql服务

这样新的root密码就设置成功了。

 

三、修改root登录权限

当你修改好root密码后,很有可能出现这种情况

ERROR 1045 (28000): Access denied for user 'root'@'localhost' (using password: YES)

这是因为root登录权限不足,具体修改方法如下

需要先停止mysql服务,这里分两种情况,一种可以用service mysqld stop,

另外一种是/etc/init.d/mysqld stop

当提示mysql已停止后进行下一步操作   Shutting down MySQL. SUCCESS!

在终端命令行输入

mysqld_safe --skip-grant-tables &         【登录mysql系统】

输入mysql登录mysql系统

mysql>use mysql;

mysql>update user set host = '%' where user = 'root';

mysql>select host, user from user;

mysql> flush privileges;

mysql> exit;

然后重新启动mysql服务就可以了。

 

### Linux环境下重置MySQL 8.0的root用户密码Linux系统中,如果忘记了MySQL 8.0的`root`用户密码,可以通过以下方法重新设置密码: #### 停止MySQL服务 首先需要停止正在运行的MySQL服务。可以使用以下命令来完成此操作: ```bash sudo systemctl stop mysql ``` #### 启动MySQL跳过权限验证 为了能够无需密码访问数据库并更改`root`用户密码,需要以安全模式启动MySQL服务器。执行如下命令: ```bash sudo mysqld_safe --skip-grant-tables & ``` 这条命令会绕过权限表加载,允许管理员不受限制地进入数据库。 #### 登录到MySQL 一旦MySQL以跳过授权表的方式启动成功,就可以通过简单的命令登录到MySQL客户端而不需要输入任何密码: ```bash mysql -u root ``` #### 修改root用户密码 进入到MySQL控制台之后,先切换至`mysql`数据库: ```sql USE mysql; ``` 接着更新`root`用户的认证字符串。这里提供两种方式实现这一目标。 ##### 方法一:直接更新authentication_string字段 可以直接修改`user`表中的`authentication_string`字段为空或者设定新的哈希值: ```sql UPDATE user SET authentication_string = PASSWORD('新密码') WHERE User = 'root'; ``` 注意,在MySQL 8.0及以上版本中,`PASSWORD()`函数已被废弃,因此推荐改用插件方式进行身份验证设置[^4]。 ##### 方法二:利用ALTER USER语句改变密码 这是更为现代的方法,适用于MySQL 8.0及其后续版本。它不仅更简洁而且更加直观: ```sql ALTER USER 'root'@'localhost' IDENTIFIED BY '新密码'; ``` 如果是远程连接的情况,则可能还需要考虑针对其他主机地址(如`%`)上的用户进行同样的处理[^5]: ```sql ALTER USER 'root'@'%' IDENTIFIED BY '新密码'; ``` #### 刷新权限并退出 完成上述任一步骤后,记得刷新权限使改动生效,并正常退出MySQL客户端: ```sql FLUSH PRIVILEGES; EXIT; ``` #### 恢复常规MySQL服务 最后关闭之前后台开启的安全模式实例,并重启标准的服务流程让一切恢复正常运作状态: ```bash sudo kill $(pgrep -f "mysqld_safe") sudo systemctl start mysql ``` 现在应该可以用刚刚设置的新密码去登录管理您的MySQL数据库了。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值