mysql异常ERROR 1044,ERROR 1819

本文介绍了解决在MySQL中创建新用户时遇到的ERROR1819和ERROR1044错误的方法。ERROR1819通常与密码强度校验有关,可以通过禁用validate_password插件来解决;ERROR1044则与用户授权权限不足相关,需检查并更新root用户的grant_priv字段。

创建新用户过程中报错

一,ERROR 1819

新创建的用户,在设置密码时,mysql密码校验插件进行了密码校验,如果不使用这个插件可以卸载
window:

uninstall plugin validate_password;
linux 在my.cnf配置文件中添加:
[mysqld]
plugin-load=validate_password.so 
validate-password=OFF

修改配置文件需要重新启动mysql.

二,ERROR 1044

在给用户授权时报错,查看当前登录的用户是否有授权的权限

mysql> select host,user,grant_priv,Super_priv from mysql.user;
+-----------+---------------+------------+------------+
| host      | user          | grant_priv | Super_priv |
+-----------+---------------+------------+------------+
| localhost | root          | N          | Y          |
| localhost | mysql.session | N          | Y          |
| localhost | mysql.sys     | N          | N          |
| %         | root          | Y          | Y          |
| %         | dept          | N          | N          |
+-----------+---------------+------------+------------+
5 rows in set (0.00 sec)

如果你使用root@% 登录,那么grant_priv 字段必须为Y,
修改语句:

mysql> UPDATE mysql.user SET grant_priv='Y' WHERE HOST='%' AND USER = 'root';
mysql> FLUSH PRIVILEGES;
执行 `USE mysql;` 时出现 `ERROR 1044 (42000): Access denied for user 'root'@'localhost' to database 'mysql'` 错误,意味着当前使用的 `root` 用户没有访问 `mysql` 数据库的权限。以下是几种可能的解决办法: #### 1. 检查密码是否正确 使用正确的密码登录 `root` 用户,示例命令如下: ```bash mysql -u root -p ``` 输入密码后,若能成功登录,再尝试执行 `USE mysql;`。 #### 2. 重新授予 `root` 用户访问 `mysql` 数据库的权限 在 MySQL 命令行中执行以下语句,重新授予 `root` 用户所有权限: ```sql GRANT ALL PRIVILEGES ON mysql.* TO 'root'@'localhost' IDENTIFIED BY 'your_password'; FLUSH PRIVILEGES; ``` 将 `your_password` 替换为 `root` 用户的实际密码。执行完上述语句后,再次尝试 `USE mysql;`。 #### 3. 检查是否存在匿名用户 匿名用户可能会干扰正常登录。可以通过以下语句查看是否存在匿名用户: ```sql SELECT User, Host FROM mysql.user WHERE User = ''; ``` 若存在匿名用户,可以使用以下语句删除: ```sql DELETE FROM mysql.user WHERE User = ''; FLUSH PRIVILEGES; ``` #### 4. 重置 `root` 用户密码 若密码遗忘或不确定,可以重置 `root` 用户密码。先停止 MySQL 服务,然后以跳过权限检查的方式启动 MySQL: ```bash sudo service mysql stop sudo mysqld_safe --skip-grant-tables & ``` 然后重新登录 MySQL,无需密码: ```bash mysql -u root ``` 在 MySQL 命令行中执行以下语句重置密码: ```sql UPDATE mysql.user SET authentication_string = PASSWORD('new_password') WHERE User = 'root' AND Host = 'localhost'; FLUSH PRIVILEGES; ``` 将 `new_password` 替换为新密码。之后停止 MySQL 服务,再正常启动: ```bash sudo service mysql stop sudo service mysql start ``` 使用新密码登录并尝试 `USE mysql;`。
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值