Mysql 安装使用时常见问题解决记录

张开发
2026/4/5 14:27:32 15 分钟阅读

分享文章

Mysql 安装使用时常见问题解决记录
目录一、 解决连接MySQL报错is not allowed to connect to this MySQL server问题描述解决方案1、在MySQL所在服务器上使用命令登录到MySQL数据库中2、选择mysql数据库并查询权限​编辑3、刷新配置二、1045-Access denied for user ‘**‘‘**‘ (using password: YES)错误处理问题描述解决方案三、MySQL登录时报错:ERROR 1045 (28000): Access denied for user ‘root‘‘localhost‘解决办法问题描述原因分析(1).检查mysql服务是否启动(2).修改mysql密码四快速解决Can t connect to local MySQL server through socket /tmp/mysql.sock (2) 五、mysql本地计算机上的MySQL服务启动后停止。某些服务在未由其他服务或程序使用时将自动停止一、 解决连接MySQL报错is not allowed to connect to this MySQL server问题描述本机装的MySQL数据库本机可以正常连接其他机器访问报错is not allowed to connect to this MySQL server防火墙等其他策略均配置没问题 。解决方案出现该问题的原因是MySQL数据库只允许自身所在的本机器连接不允许远程连接。1、在MySQL所在服务器上使用命令登录到MySQL数据库中# 终端登录mysql mysql -u root -p2、选择mysql数据库并查询权限use mysql; select host from user where user root;可以看到执行查询语句后得到的数据结果中 host 的值是 localhost再执行update语句修改权限update user set host % where user root;3、刷新配置flush privileges;再次执行查询权限语句select host from user where user root;可以看到已经修改成功改表法可能是你的帐号不允许从远程登陆只能在localhost。这个时候只要在localhost的那台电脑登入mysql后更改 mysql 数据库里的 user 表里的 host 项从localhost改称%mysql -u root -pvmwaremysqluse mysql;mysqlupdate user set host % where user root;mysqlselect host, user from user;授权法例如你想myuser使用mypassword从任何主机连接到mysql服务器的话。GRANT ALL PRIVILEGES ON . TO myuser% IDENTIFIED BY mypassword WITH二、1045-Access denied for user ‘**‘‘**‘ (using password: YES)错误处理问题描述错误提示1045 - Access denied for user usernameIP (using password: YES)表示拒绝用户{username} 从{IP}链接数据库{using password: YES}:标识使用密码登录解决方案授权用户远程访问即可格式GRANT {权限} ON {库表} TO {用户名}{访问地址} IDENTIFIED BY {密码}#mysql中执行授权命令 GRANT ALL PRIVILEGES ON . TO USER1% IDENTIFIED BY PWD-2020; #手动刷新权限 flush privileges;权限可以执行的操作权限all privileges 所有权限也可以是select,insert,update,delete等组合权限库表 :可以操作的库和表单库单表db1.table1,单库全表db1.全库全表“.*”;用户名远程访问的用户名访问地址只允许用户在特定ip上链接数据库“%”标识不限制IP。密码用户远程链接数据库的密码默认密码规则需要包括大小写字符、特殊字符和数字。#mysql远程访问被拒问题 1045 - Access denied for user #首先要去授权 如果授权用户root给别人授权都deny的时候很可能是没有配置主机地址访问 #去到mysql 运行的 主机 ,如docker容器内部mysql实例 里 输入 GRANT ALL PRIVILEGES ON *.* TO root% IDENTIFIED BY 123456 with grant option; Or 非root 用户时使用指定数据库 GRANT ALL PRIVILEGES ON database_name.* TO username% IDENTIFIED BY password ; #root代表root用户 # username 代表用户 # database_name是数据库名 #*.* 代表所有库.所有表 #ALL PRIVILEGES 代表所有操作权限 #%代表任何网络下都可以访问也就是允许可以远程访问 #123456 的用户密码 # with grant option 拥有Root 权限 #最后刷新权限 flush privileges;三、MySQL登录时报错:ERROR 1045 (28000): Access denied for user ‘root‘‘localhost‘解决办法问题描述在云服务器使用 docker安装的Mysql5.7数据库刚开始的时候使用正常后面突然有一天就连接不上了报错为: ERROR 1045 (28000): Access denied for user root1xxx(using password:YES) 当登录MySQL数据库出现 Error 1045 错误时表明输入的用户名或密码错误 被拒绝访问了原因分析mysql的服务器停止用户的端口号或者IP导致mysql的配置文件错误my.ini等文件root用户的密码错误注意 MySQL服务搭建后 默认root用户是不能进行远程访问连接的(1).检查mysql服务是否启动当mysql的服务器停止时会报上面的错误这里使用的是docker故使用 docker ps命令查看mysql相关服务是否正常#查看docker 相关服务 docker ps ... #进入docker-mysql docker exec -it docker_mysql bash ... #进入mysql mysql -uroot -p #然后输入密码 ...通过上面命令可以检测mysql是否启动,(2).修改mysql密码MySQL服务搭建后 默认root用户是不能进行远程访问连接的或者root用户的密码错误也会报上面错误故进行mysql密码修改来排除1).查看临时密码首次安装的mysql是没有修改过密码的使用下面命令查看生成的临时密码grep A temporary password is generated for rootlocalhost /var/log/mysqld.log2).登入mysql -uroot -p #然后输入临时密码进入mysql端3).修改密码ALTER USER rootlocalhost IDENTIFIED BY root;localhost代表的是地址, root代表 数据库密码,root可以修改为自己的密码执行上面代码可能会报错解决办法查看当前密码策略show variables like %validate_password_policy%; show variables like %validate_password_length%;修改密码策略修改长度和弱度set global validate_password_policy0; #设置为弱口令 set global validate_password_length1; #密码最小长度为1再次修改ALTER USER rootlocalhost IDENTIFIED BY root;刷新flush privileges;退出quit;重新登录mysql -uroot -p show databases;(3).开启远程访问use mysql; #访问mysql库 update user set host % where user root; #使root能在任何的host访问 FLUSH PRIVILEGES; #刷新在执行上面update时也许会报错Duplicate entry ‘%-root’ for key ‘PRIMARY’这是因为 有多个ROOT用户纪录在USER表中了 最好是把除了host为’%或者为’localhost’的其他user字段为root的用户删除掉然后利用命令 FLUSH PRIVILEGES 刷新即可解决该问题使用select host from user where user root;查看一下host是否已经有了 %这个值然后 利用命令 FLUSH PRIVILEGES 刷新这样就解决了上面的问题再次连接数据库看看是否成功(4).修改mysql配置1).方法一在my.cnf的[ mysqlId]里面加配置skip-grant-tables这个配置是可以实现远程登陆但是跳过权限直接写在配置文件里的这种做法 不建议使用2).方法二使用以下命令操作grant all privileges on . to root% identified by 密码 with grant option; FLUSH PRIVILEGES;通过mysql -uroot -p 命令并输入密码进入数据库mysql -uroot -p然后执行下面命令grant all privileges on . to root% identified by 密码 with grant option; 刷新并退出 FLUSH PRIVILEGES; exit;(5).总结通过以上排除方法就可以解决ERROR 1045 (28000)_ Access denied for userrootlocalhost报错了注意如果mysql是docker部署的当每次重启容器时可能需要再一次跑一下 步骤(4).修改mysql配置 这个命令这个也有解决的办法#配置mysql密码还有默认的身份验证插件-解决每隔一段时间就会登陆不上问题#身份插件-mysql_native_password 本地密码 default_authentication_pluginmysql_native_password#密码失效时间-永不过期default_password_lifetime0其他解决办法docker exec -it 进入mysql执行下面命令解决主要是 mysql_native_password 这个参数要注意mysql -u root -pALTER USER root% IDENTIFIED WITH mysql_native_password BY root;flush privileges;四快速解决Can t connect to local MySQL server through socket /tmp/mysql.sock (2) 问题描述ERROR 2002 (HY000): Cant connect to local MySQL server through socket /tmp/mysql.sock (2)rootiZ:~# mysql -uroot -p Enter password: ERROR 2002 (HY000): Cant connect to local MySQL server through socket /tmp/mysql.sock (2)mysql.sock 这个文件在你的pc上的地址可能不同不过不影响通过提示找到相应的目录就行了这个文件一般是会自动生成的所以遇到这种报错一般是不能自动生成这个文件那么解决思路就出来了简单粗暴点可以直接创建一个mysql.sock文件但我一般不建议这样因为你不知道内容怎么写当然你可以在其他地方copy这我就不讲了既然是不能自动创建为了找清楚问题根源就做了些让人也疼的无聊测试最后发现原来是文件夹权限问题真TM牙疼既然这样解决起来就简单了将mysql.sock所在目录的权限改为777就行了sudo chmod 777 /tmp然后sudo service mysql startrootiZ:~/ $ sudo service mysql start [16:58:11] * Starting MySQL database server mysqld [ OK ] * Checking for tables which need an upgrade, are corrupt or were not closed cleanly. rootiZ:~/ $ mysql -uroot -p [16:58:35] Enter password: Welcome to the MySQL monitor. Commands end with ; or \g. Your MySQL connection id is 43 Server version: 5.5.50-0ubuntu0.14.04.1 (Ubuntu) Copyright (c) 2000, 2016, Oracle and/or its affiliates. All rights reserved. Oracle is a registered trademark of Oracle Corporation and/or its affiliates. Other names may be trademarks of their respective owners. Type help; or \h for help. Type \c to clear the current input statement. mysql五、mysql本地计算机上的MySQL服务启动后停止。某些服务在未由其他服务或程序使用时将自动停止找到mysql文件下的data文件打开有一个ERR文件,查看启动报错内容mysql初始化的时候找不到对应的数据库存储目录2025-03-12T13:53:17.458880Z 1 [ERROR] [MY-011011] [Server] Failed to find valid data directory.2025-03-12T13:53:17.459566Z 0 [ERROR] [MY-010020] [Server] Data Dictionary initialization failed.解决方法1、手动删掉自己创建的data文件夹2、然后再管理员cmd下进入 bin 目录移除自己的mysqld服务mysqld -remove MySQL Service successfully removed.3、在cmd的bin目录执行 mysqld --initialize-insecure程序会在动MySQL文件夹下创建data文件夹以及对应的文件4、bin目录下执行mysqld --install 安装mysqld服务5、在bin目录下运行net start mysql ,启动mysql服务。

更多文章