centos虚拟机下的mysql登录时出现Access denied for user 'root'@'localhost' (using password: YES) 及外部拒绝访问的解决方法
centos虚拟机下的mysql登录时出现Access denied for user 'root'@'localhost' (using password: YES) 及外部拒绝访问的解决方法
先说下我的情况,我用的mysql是docker部署的。然后在使用过程遇到两个问题。
1.外部拒绝访问,就是想Navicat或者sqlyog的外部软件访问报错。
2.在linux下的mysql命令行登录也出现权限问题。
第一个问题的解决方法挺简单的,就是授予权限。但是授予权限是要在mysql命令行下执行的,然后就因为第二个问题,mysql登录不进去,给卡死了。下面说下解决方法。
1.MySQL登录出现权限拒绝问题
解决方法就是重置密码。。没错,没有什么方法比‘**重启‘**更管用。步骤如下:
1.跳过认证启动
首先进入到容器中。
mysql是我的数据库名称。命令的意思是:
然后编辑mysql配置文件,使用vi终端编辑器
vi /etc/mysql/conf.d/docker.cnf
在docker.cnf文件下新增skip-grant-tables
然后保存退出。这样下次登录mysql就不用密码了。然后重新启动容器。
docker restart mysql
这一步要说下vi终端编辑器的工作模式。
编辑模式:按”i“进入,按esc退出编辑模式进入命令模式
命令模式:就是最开始的状态
末行模式:在命令模式下按“:”进入,末行模式输入wq就是保存退出(w是write,q是quit)。q!是强制退出
2.重新设置密码
同第一样在进入mysql容器后,直接输入mysql就登录成功。
接着重新设置密码。
#使用mysql自带的mysql数据库。
use mysql;
#更改user表下的密码。
UPDATE user SET authentication_string = password ( 'a123456' ) WHERE User = 'root';
#刷新权限
flush privileges;
#退出
quit;
注意!!!这里有个坑,user表的密码的属性名是authentication_string
3.删除第一步的跳过认证启动
重新进入docker容器。在docker.cnf文件下删掉skip-grant-tables
4.重启mysql容器
再次重新启动后,就可以登录mysql。
2.外部拒绝访问问题解决
在mysql命令行下输入:
mysql> GRANT ALL PRIVILEGES ON *.* TO '用户名'@'%' IDENTIFIED BY '密码' WITH GRANT OPTION;
Query OK, 0 rows affected (0.02 sec)
mysql> FLUSH PRIVILEGES;
Query OK, 0 rows affected (0.00 sec)
**这里用户名和密码都是你自己的。**另外说一下grant命令的解释:
grant 权限1,权限2, ... 权限n on 数据库名称.表名称 to 用户名@用户地址 identified by '连接口令';
权限1,权限2,... 权限n 代表 select、insert、update、delete、create、drop、index、alter、grant、references、reload、shutdown、process、file 等14个权限。
当权限1,权限2,... 权限n 被 all privileges 或者 all 代替时,表示赋予用户全部权限。
当 数据库名称.表名称 被 . 代替时,表示赋予用户操作服务器上所有数据库所有表的权限。
用户地址可以是localhost,也可以是IP地址、机器名和域名。也可以用 '%' 表示从任何地址连接。
'连接口令' 不能为空,否则创建失败。
参考资料
https://blog.csdn.net/u012467855/article/details/81266470
https://blog.csdn.net/qq_36675754/article/details/81381341
原文地址:https://www.cnblogs.com/rockyh-/p/12572279.html
- Spark 伪分布式 & 全分布式 安装指南
- 十步完全理解 SQL
- 利用HSTS嗅探浏览器历史纪录的三个漏洞
- Verilog代码设计风格
- Yaffs_checkptrw
- 那些 Shell、Awk 中自动隐式类型转换的“坑”
- 浏览器 HTTP 协议缓存机制详解
- 详解 Windows 下 Eclipse CDT 配置 C/C++ 编译环境
- 硬核乘法器的Verilog HDL 调用
- Web 自动化测试与智能爬虫利器:PhantomJS 简介与实战
- 浅谈 Scala 中下划线的用途
- Java 多线程之 Runnable VS Thread 及其资源共享问题
- 块RAM的Verilog HDL调用
- 玩转千位分隔符输出
- JavaScript 教程
- JavaScript 编辑工具
- JavaScript 与HTML
- JavaScript 与Java
- JavaScript 数据结构
- JavaScript 基本数据类型
- JavaScript 特殊数据类型
- JavaScript 运算符
- JavaScript typeof 运算符
- JavaScript 表达式
- JavaScript 类型转换
- JavaScript 基本语法
- JavaScript 注释
- Javascript 基本处理流程
- Javascript 选择结构
- Javascript if 语句
- Javascript if 语句的嵌套
- Javascript switch 语句
- Javascript 循环结构
- Javascript 循环结构实例
- Javascript 跳转语句
- Javascript 控制语句总结
- Javascript 函数介绍
- Javascript 函数的定义
- Javascript 函数调用
- Javascript 几种特殊的函数
- JavaScript 内置函数简介
- Javascript eval() 函数
- Javascript isFinite() 函数
- Javascript isNaN() 函数
- parseInt() 与 parseFloat()
- escape() 与 unescape()
- Javascript 字符串介绍
- Javascript length属性
- javascript 字符串函数
- Javascript 日期对象简介
- Javascript 日期对象用途
- Date 对象属性和方法
- Javascript 数组是什么
- Javascript 创建数组
- Javascript 数组赋值与取值
- Javascript 数组属性和方法
- laravel 解决Validator使用中出现的问题
- php文件上传原理与实现方法详解
- PHP常见的序列化与反序列化操作实例分析
- Laravel jwt 多表(多用户端)验证隔离的实现
- Laravel实现通过blade模板引擎渲染视图
- Laravel 验证码认证学习记录小结
- ThinkPHP类似AOP思想的参数验证的实现方法
- 解决php扩展安装不生效问题
- 微信小程序发送订阅消息的方法(php 为例)
- Laravel5.5 动态切换多语言的操作方式
- Laravel 实现添加多语言提示信息
- Laravel监听数据库访问,打印SQL的例子
- PHP Swoole异步读取、写入文件操作示例
- PHP调用QQ互联接口实现QQ登录网站功能示例
- laravel解决迁移文件一次删除创建字段报错的问题