MySQL access denied for user ...
MySQL安装完成后出现最多的问题是程序无法连接到数据库「Access denied」,网上的帖子很多,大多是教你如何调整配置以实现连接,然而并没有真正告诉你为什么会出现该问题,这里总结一下,希望可以帮助大家尽快解决问题。前提是你要连接的MySQL数据库没有ip地址、端口、防火墙设置等网路方面的问题。
部分开发者「本人也是其中之一,哈哈」使用root用户直接连接MySQL,强烈不推荐,因为MySQL的root用户是管理数据库用的,应用程序通过root连接数据库非常非常不安全,甚至破坏了MySQL的账户安全体系,尤其是生产环境,DBA绝对不会让你这么干的。
只要Access denied是由于账户权限问题导致的,一般推荐的***实践步骤如下,遵从这些步骤,你既可以了解到整个MySQL的账户权限体系,同时又不再可能遇到MySQL Access denied for user...这个问题。
MySQL添加数据库并配置用户和权限的***实践样例
一、以root用户身份连接到MySQL服务器,如果已为root帐户分配了密码,则还必须提供-p选项。
- //以root用户身份登录到MySQL服务
- shell> mysql -u root -p
- //与上面命令功能一致,只是默认选中了mysql这个库
- shell> mysql -u root -p mysql
二、创建一个测试数据库mytest
- mysql> create database mytest character set 'utf8' collate 'utf8_general_ci';
知识拓展:显示已有库
- mysql> show databases;
三、以root身份连接到服务器,添加新帐户
- //创建一个主机名限制为localhost密码是mypass的jeffrey用户
- mysql> create user 'jeffrey'@'localhost' identified by 'mypass';
帐户的主机名部分(如果省略)默认为“%”。%表示所有主机都可以通过当前的账户访问数据库。
知识拓展:对账户进行查询、修改、删除等操作
- //查看已有账户
- mysql> select user,host from mysql.user;
- //可根据需要修改账户密码,注意区分版本
- //从MySQL 5.7.6开始,使用alter user语法修改密码
- mysql> alter user 'jeffrey'@'localhost' identified by 'new_password';
- //在5.7.6之前,使用set password语法修改密码
- mysql> set password for 'jeffrey'@'localhost' = password('new_password');
- //重命名账户
- mysql> rename user 'jeffrey'@'localhost' to 'jeff'@'127.0.0.1';
- //删除账户
- mysql> drop user 'jeffrey'@'localhost';
四、对账户赋权
- //针对mytest库的所有操作权限分配给'jeffrey'@'localhost'账户
- mysql>grant all on mytest.* to 'jeffrey'@'localhost';
- //针对db2库的invoice对象的select权限分配给'jeffrey'@'localhost'账户,并允许该账户可继续下发权限
- mysql> grant select on db2.invoice to 'jeffrey'@'localhost' with grant option;
- 知识拓展:移除、查看已经设置的权限
- //移除权限
- mysql> revoke all privileges on *.* from 'jeffrey'@'localhost';
- mysql> revoke select on db2.invoice from 'jeffrey'@'localhost';
- //显示root权限
- mysql> show grants for 'root'@'localhost';
- //要显示授予您用于连接到服务器的帐户的权限,可以使用以下任何语句:
- mysql> show grants;
- mysql> show grants for current_user;
- mysql> show grants for current_user();
五、刷新权限,立即生效
- mysql> flush privileges;
六、连接测试
- //这里给出jdbc连接mysql的字符串,方便验证
- jdbc:mysql://ip:3306/mytest?useUnicode=true&characterEncoding=utf8
总结
通过上面的操作步骤,相信您已经对整个MySQL的账户权限管理体系有个很清楚的认识,如果出现MySQL Access denied for user...问题只需要按照上面的步骤排查一下即可***解决。
之所以,这么多的开发者遇到MySQL Access denied for user...问题,主要的原因有三:一是因为直接使用root连接,默认root只能本地连接,远程连接自然失败;二是因为账户与权限设置不正确;三是根本不了解MySQL账户权限管理的一般步骤「大部分属于这种情况」。
这篇好文章是转载于:学新通技术网
- 版权申明: 本站部分内容来自互联网,仅供学习及演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系,请提供相关证据及您的身份证明,我们将在收到邮件后48小时内删除。
- 本站站名: 学新通技术网
- 本文地址: /news/detail/tanhbfcjhk
-
2023 年度 A 类学科竞赛项目清单
那个人有梦想 09-16 -
从《银行业金融机构数据治理指引》监管要求看商业银行数据能力建设
51CTO 09-21 -
爱思唯尔的ESWA——模板、投稿、返修、接收的
老板来碗小面加蛋~ 09-16 -
国航天科技集团公司的各个研究院
知识在于积累 09-17 -
全球WIFI功率信号最强的国家清单,无线WIFI调优
Cisco_VIP 09-17 -
ChatGPT注册流程攻略,含验证码接收
PHP中文网 05-29 -
AI绘画Midjourney的咒语关键词汇
毕设小程序软件程序猿 09-17 -
创作者身份认证申请规则和审核标准
CSDN官方博客 09-16 -
的10 个顶尖的国内外设计网站
四喜圆子- 09-16 -
OBS做绿幕直播滤镜实现去掉绿色背景
视频砖家 09-16