正确认识Access denied for user 'root'@'localhost' (using password: YES)

前言

项目临近上线,需要准备部署工作。项目在选择服务器的时候,最终领导确定的是自购服务器,为了确保工作顺利,刚好手上有一台新电脑,我开始从零配置服务器之路。一路遭遇的坎坷 ,难以形容。可能用多了阿里云的web界面之后,人的水平也下降很多。

Access denied for user 'root'@'localhost' (using password: YES) 是本地运维中遇到的最大的问题。血淋淋的教训。

由于废话较多,你可以直接看结尾。

整体过程

  • 安装系统
  • 配置端口映射
  • 配置防火墙
  • 安装docker
  • 安装docker-compose
  • 编写配置文件
  • 编写自动部署脚本
  • 运行项目

阶段问题:

  • 系统安装问题。

这里使用老毛桃软件,其中ISO模式进行系统安装。
镜像选择的是centos-7-x86_64-dvd-1511.iso
电脑修改启动项,进入u盘启动即可。

遇到的问题:U盘启动电脑进入安装界面,如果直接点击安装,会无法执行。

需要修改配置。这里查询了一大圈,都说是按 e键 进入配置修改。实际上我这里是按 table键。

记住是:

table键 table键 table键

此时进入修改配置,我的是 >vmlinuz initrd=initrd.img inst.stage2=hd:/dev/sdc4 quiet

这里的sdc4是我的u盘。要替换你的u盘名称。 我在另外一台电脑上u盘则是sdb4

如果查看u盘,可以不修改配置,安装报错时,此时可以输入shell命令。

输入
cd /dev
ls -l
自己寻找 sd类似的名词即可。

  • 端口映射问题。

由于服务器位于内网,需要外部能访问该服务器,则需要配置端口映射。公司内部使用的网康防火墙,配置位于 防火墙的 策略管理-地址转换。

这里切记:记得点击右上角生效按钮。否则会无效。我又没看到这个按钮。

  • 主机联网问题。

电脑插上网线之后,无法联网。检查了多次网卡设置,没发现异常。

最后我查看了另一台window服务器的配置,才注意到不能自动分配ip。需要手动给电脑指定ip地址。

  • 安装docker

本次服务器我使用docker进行部署。在安装后,发现无法启动docker的守护进程。

出现2个问题。
问题一: exec: "docker-proxy": executable file not found in PATH. sudo ln -s docker-proxy-current docker-proxy 问题原因是名字的问题。没有docker-proxy 需要将原本 docker-proxy-current 增加一个软连接docker-proxy 类似的问题都是如此。例如 exec: "docker-runc": executable file not found inPATH.
则执行 sudo ln -s docker-runc-current docker-runc

最后结果如下:

cd /usr/libexec/docker/
[root@localhost docker]# ls -la
总用量 7400
drwxr-xr-x.  2 root root    4096 4月  11 15:26 .
drwxr-xr-x. 40 root root    8192 4月  16 13:40 ..
-rwxr-xr-x.  1 root root  820472 3月   8 01:07 docker-init-current
lrwxrwxrwx.  1 root root      20 4月  11 15:26 docker-proxy -> docker-proxy-current
-rwxr-xr-x.  1 root root 1687304 3月   8 01:07 docker-proxy-current
lrwxrwxrwx.  1 root root      19 4月  10 19:15 docker-runc -> docker-runc-current
-rwxr-xr-x.  1 root root 5047808 3月   8 01:07 docker-runc-current

问题二:service docker start 失败。
问题是配置异常。直接删除配置文件或者确保里面格式错误。确保格式是Json
以下是我的配置文件位置和内容:

[wuwenfu@localhost ~]$ cat /etc/docker/daemon.json
{
  "registry-mirrors": ["https://registry.docker-cn.com"]
}
  • 安装docker-compose。

这里先安装pip。再安装docker-compose
没遇到问题。

  • 编写配置文件。
    yml配置文件的问题。
    分享下配置文件。java-web的yml
    这里要注意一个问题。由于我本人偷懒,对整体文件夹设置的777,导致mysql的配置文件也设置的777。而mysql官方会判断,如果权限为777 则忽略该配置文件。
    mysql的配置文件路径
    mysql/mysql.conf.d/mysqld.cnf

  • 自动部署的
    使用的jenkins的| publish-over-ssh插件。遇到个问题,文件无法进行传递。例如我的war包无法上传到指定服务器。我还未能解决这个问题。
    目前间接的解决方法:由于可以执行远程脚本。使用curl进行下载war部署。
    在jenkins的部署服务器上安装了nginx。将自动打包产生的war 拷贝到配置的web目录下。
    以下是我编写的shell脚本。
    该脚本的作用:记录部署日志;停止容器;下载war包;解压war包;删除war包;替换密码等;重新产生容器。

#!/bin/bash
td=`date -d today +"%Y-%m-%d"`
exec 1>>/home/wuwenfu/deploy-logs/out$td.txt
exec 2>>/home/wuwenfu/deploy-logs/error$td.txt
echo `date -d today +"%Y-%m-%d %H:%M:%S"`autodeploy
cd /home/wuwenfu/dockerfiles/lightai-web
docker-compose stop
curl -o /home/wuwenfu/dockerfiles/lightai-web/all-web/webapps/lightai-api.war  http://192.168.3.198:183/lightai-api.war
unzip -oq /home/wuwenfu/dockerfiles/lightai-web/all-web/webapps/lightai-api.war  -d /home/wuwenfu/dockerfiles/lightai-web/all-web/webapps/lightai-api
rm -f /home/wuwenfu/dockerfiles/lightai-web/all-web/webapps/lightai-api.war
sed -i 's/127.0.0.1/db/' /home/wuwenfu/dockerfiles/lightai-web/all-web/webapps/lightai-api/WEB-INF/classes/jdbc.properties
sed -i 's/127.0.0.1/redis/' /home/wuwenfu/dockerfiles/lightai-web/all-web/webapps/lightai-api/WEB-INF/classes/jedis.properties
sed -i '1,3s/NmCGbfcSs7M4nSrU/123456/' /home/wuwenfu/dockerfiles/lightai-web/all-web/webapps/lightai-api/WEB-INF/classes/jdbc.properties
docker-compose up -d --force-recreate
  • 运行项目。

所有的一切都弄好了。此时访问项目。出现如下问题

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

这个问题真的很严重。它导致我怀疑人生。

出现这个问题,原因是:密码错误。是密码错误。

由于我的数据库配置文件是jdbc.properties

jdbc.type=mysql
jdbc.driverClassName=com.mysql.jdbc.Driver
jdbc.url=jdbc:mysql://127.0.0.1:3306/lightai?useUnicode=true&characterEncoding=UTF8&useSSL=false&tinyInt1isBit=false
jdbc.username=root
jdbc.password=123456

# Configuration needs to be studied
c3p0.acquireIncrement=3  
c3p0.initialPoolSize=3  
c3p0.idleConnectionTestPeriod=60  
c3p0.minPoolSize=2  
c3p0.maxPoolSize=50  
c3p0.maxStatements=100  
c3p0.numHelperThreads=10
c3p0.maxIdleTime=600
c3p0.testConnectionOnCheckout=true
c3p0.preferredTestQuery=select 1 from net_logs

我反复检查了该文件。在确保没任何问题之后,依旧出现这个提示。此刻我已经迷茫了。

于是我开始了艰难的排除之路。从docker容器是否互通、mysql的权限等多个方面,依旧无法解决。最好我决定推倒本次的容器部署。使用传统的部署方式, 开始安装java运行环境。
但是让我伤心的依旧出现这个问题。

无奈之下,我只好发到微信群,咨询朋友。朋友就直接说了,密码不正确。我和他们辩论,我密码肯定对,使用工具都连接上了。说完这个之后,我突然顿悟了,赶紧查看 了下spring.xml
其中一个配置是

<!-- 配置c3p0连接池 开始 -->
    <bean id="myC3P0DataSource" class="com.mchange.v2.c3p0.ComboPooledDataSource">
        <property name="driverClass" value="${jdbc.driverClassName}"></property>
        <property name="jdbcUrl" value="${jdbc.url}"></property>
        <property name="user" value="${jdbc.username}"></property>
        <property name="password" value="xxxx"></property>
        <property name="acquireIncrement" value="${c3p0.acquireIncrement}"></property>
        <property name="initialPoolSize" value="${c3p0.initialPoolSize}"></property>
        <property name="maxIdleTime" value="${c3p0.maxIdleTime}"></property>
        <property name="maxPoolSize" value="${c3p0.maxPoolSize}"></property>
        <property name="minPoolSize" value="${c3p0.minPoolSize}"></property>
        <property name="idleConnectionTestPeriod" value="${c3p0.idleConnectionTestPeriod}"></property>
        <property name="maxStatements" value="${c3p0.maxStatements}"></property>
        <property name="numHelperThreads" value="${c3p0.numHelperThreads}"></property>
        <property name="testConnectionOnCheckout" value="${c3p0.testConnectionOnCheckout}"></property>
        <property name="preferredTestQuery" value="${c3p0.preferredTestQuery}"></property>
        <property name="acquireRetryDelay" value="1000"></property>
        <property name="acquireRetryAttempts" value="60"></property>
        <property name="breakAfterAcquireFailure" value="false"></property>
    </bean>
    <!-- 配置c3p0连接池 结束 -->

看到密码那一栏,我眼一黑,什么时候我改的常量???
连忙修改过来,正确的配置是:

<!-- 配置c3p0连接池 开始 -->
    
        <property name="password" value="${jdbc.password}"></property>
        

访问项目。总算看到正常的画面了。欲哭无泪!

总结

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

我的认知: 用户、密码都正确。但是没有访问数据库的权限。

该认知是错误的.

正确的认知:

你密码错误了。

对于 ERROR 1045 (28000): Access denied for user ['root'@'localhost'] 此类错误返回时, (using password: ?)中?的关键字是YES还是NO,关键不在于用户是否存在,密码是否正确,它的结果取决于登录时,用户对于密码有没有字符串的输入,如果没有,MySQL数据库验证后,若出错返回此类信息,则应是 (using password: NO),若用户对密码有字符串的输入,返回的则是(using password: YES)。

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 158,736评论 4 362
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 67,167评论 1 291
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 108,442评论 0 243
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 43,902评论 0 204
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 52,302评论 3 287
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 40,573评论 1 216
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 31,847评论 2 312
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 30,562评论 0 197
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 34,260评论 1 241
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 30,531评论 2 245
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 32,021评论 1 258
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 28,367评论 2 253
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 33,016评论 3 235
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 26,068评论 0 8
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 26,827评论 0 194
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 35,610评论 2 274
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 35,514评论 2 269

推荐阅读更多精彩内容