mysql 认证方式_浅谈MySQL用户账号认证方式

本文深入探讨MySQL用户认证机制,解析用户账号如何与主机名绑定,以及如何解决因主机名不匹配导致的连接失败问题。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

为了有效控制数据库用户的访问权限,在MySQL数据库中创建了一个新用户,但使用刚创建的用户和密码却发现连接不了MySQL数据库,通过查看官网手册及《MySQL技术内幕》一书,才逐渐熟悉MySQL的用户账号认证方式,这里做一个简单总结。另外本篇文章基于MySQL5.5版本,如果需要测试文章内容,低于此版本请先升级MySQL数据库https://www.zerostopbits.com/how-to-upgrade-mysql-5-1-to-mysql-5-5-on-centos-6-7/

MySQL数据库中有一个名称为mysql的系统数据库,USE mysql;进入该数据库,SHOW TABLES查看该数据库下的表,可以看到大概有二三十张表,本篇文章仅讨论user表

下面使用CREATE命令创建一个用户账号:

CREATE USER JING IDENTIFIED BY 'TESTPASSWORD';

每新创建的用户账号就会在user表下增加一条记录,使用SELECT命令查看user表可以找到刚刚创建的那个用户,用户名(User)为JING,密码(Password)已被加密:

99cd7ab4f483a3c177f1e3eafd9bbb31.png

使用Xshell连接到CentOS服务器(我的MySQL数据库装在京东云的CentOS服务器上),输入mysql -u JING -p连接MySQL数据库服务器,输入密码后却拒绝访问,返回如下结果:

ERROR 1045 (28000): Access denied for user 'JING'@'localhost' (using password: YES)

这就非常奇怪了,明明使用正确的账号和密码,怎么就连接不了了呢,这种时候如果不了解MySQL的账户认证方式,可能会急得直跺脚吧! ̄へ ̄

下面就来简单介绍一下MySQL的用户账号认证方式:

首先MySQL的用户账号(account)由两部分组成:用户名(User)和主机名(Host)。格式为’User’@’Host’,简单举几个创建用户的例子:

# 用户名为Mary,密码为watermelon,必须从指定的主机地址192.168.128.3连接服务器 CREATE USER 'Mary'@'192.168.128.3' IDENTIFIED BY 'watermelon'; # 用户名为Jack,密码为pineapple,必须从C类子网192.168.128连接服务器 CREATE USER 'Jack'@'192.168.128.%' IDENTIFIED BY 'pineapple'; # 用户名为Jane,密码为pear,必须是test.com域名或其子域名下的主机连接服务器 CREATE USER 'Jane'@'%.test.com' IDENTIFIED BY 'pear'; # 用户名为Michael,密码为banana,只能从本地连接服务器 CREATE USER 'Michael'@'localhost' IDENTIFIED BY 'banana'; # 用户名为Bob@localhost,密码为jujube,可从任意主机连接服务器 CREATE USER 'Bob@localhost' IDENTIFIED BY 'jujube'; # 用户名为Smith,密码为orange,可从任意主机连接服务器 CREATE USER 'Smith'@'%' IDENTIFIED BY 'orange'; # 用户名为JING,密码为TESTPASSWORD,可从任意主机连接服务器 CREATE USER 'JING' IDENTIFIED BY 'TESTPASSWORD';

从这几个例子可以得出下面几条结论:

MySQL的账户认证除了需要用户名和密码正确之外,还必须从指定的主机连接服务器才能够成功访问MySQL数据库服务器

主机名可以使用%通配符

主机名可以是域名、IPv4地址、localhost,实际上还可以是IPv6地址、127.0.0.1等(localhost和127.0.0.1还是有一些区别的,不要误以为两者完全等价)

主机名可以省略,如果省略则默认主机名为%,表示任意主机,注意如果省略主机名,则@符号也需要省略,’JING’@”的主机名为空字符串并不是%

用户名和主机名需要用@符号隔开

除此之外,还有如下几点需要了解

用户名和主机名可以使用单引号括起来,也可以省略单引号,但如果包含像%、_等特殊字符,则单引号不可以省略

MySQL服务器对用户的连接请求先根据主机地址(Host)匹配,再根据用户名(User)行匹配,最后才会匹配密码(Password)

重点在于第7点,根据第7点写出下面的SQL语句:

SELECT Host, User, Password FROM user ORDER BY Host DESC, User DESC;

返回结果如下:

e0c5d03186b23cc294cb562a8b0096fe.png

回到刚开始的问题,为什么我使用正确的用户名和密码连接MySQL服务器会被拒绝访问呢?

这是因为我使用CREATE USER JING IDENTIFIED BY ‘TESTPASSWORD’;命令创建的用户JING可以通过任意主机访问MySQL服务器,而我通过Xshell登录京东云主机,然后使用mysql -u JING -p命令连接MySQL服务器,使用的主机地址(Host)为:localhost,用户名(User)为:JING,密码(Password)为:TESTPASSWORD。根据SELECT Host, User, Password FROM user ORDER BY Host DESC, User DESC;返回的结果,MySQL会从上往下逐个去校验匹配,最终匹配第2条记录,即Host为localhost,User为空,密码为空。而一旦成功匹配一条记录,便不会继续向下匹配了。

综合上面的分析,如果想要成功连接MySQL,只要执行mysql -u JING -p,当需要输入密码时,不用输入任何内容直接回车就可以了;如果我是通过我的Windows笔记本想要使用用户JING连接我的京东云MySQL数据库,只要打开cmd执行如下命令然后输入密码(此处需要输入密码是因为MySQL只能匹配到Host为%,User为JING,Password为TESTPASSWORD的那条记录)即可成功连接:

mysql -u JING -h 116.196.114.75 -p

318b11fbabd2cb7eebc8685989d1bb19.png

登录之后我们也可以通过如下命令查看当前是通过哪个账号(account)连接的,从而验证上面的结论:

SELECT CURRENT_USER();

Xshell登录京东云主机返回的结果:

81ff3bf0d3bb20a9838cac627a5cc930.png

我的Windows命令行返回的结果:

c8c635d049120efdc098d1a292c695b8.png

原文出处:kuranado -> http://www.kuranado.com/2018/01/17/%E6%B5%85%E8%B0%88MySQL%E7%94%A8%E6%88%B7%E8%B4%A6%E5%8F%B7%E8%AE%A4%E8%AF%81%E6%96%B9%E5%BC%8F/

1.1量子力学方法 1.1.1 CASTEP CASTEP由Cambridge大学Mike Payne教授发布,采用密度泛函理论、平面波赝势法(用平面波描述外层价电子,内层电子用赝势代替),进行第一性原理量子力学计算的程序。其中总能量包含动能、静电能和交换关联能三部分,各部分能量都可以表示成密度的函数。电子与电子相互作用的交换和相关效应采用局域密度近似(LDA)或广义密度近似(GGA),静电势只考虑作用在系统价电子的有效势(即赝势:Ultrasoft 或norm-conserving),电子波函数用平面波基组扩展(基组数由Ecut-off确定),电子状态方程采用数值求解(积分点数由FFT mesh确定),电子气的密度由分子轨道波函数构造,分子轨道波函数采用原子轨道的线性组合(LCAO)构成。计算总能量采用SCF迭代。CASTEP在计算分子、固体、表面、界面、掺杂、错位等方面非常有优势。 主要功能及特性:  支持 PBE、PBE0、HSE03、HSE06以及SCAN meta-GGA 等交换关联泛函;  能量计算:形成能、吸附能、缺陷形成能、内聚能、表面能等;  结构优化:力与应力的计算、几何驰豫(原子坐标、晶胞参数、键长、键角、)等;  过渡态:过渡态搜索等;  电子结构:能带、态密度(局域、分波)、声子谱、电荷密度、差分电荷密度、电子局域函数、电子轨道、扫描隧道显微镜STM模拟、共价键级、静电势(支持可视化)、静电荷(Mulliken、Hirshfeld)、功函数、自旋极化(共线、非共线)、支持旋轨耦合、费米面、支持利用On-the-fly 生成模守恒(normconserving)赝势,特别适用于计算磁性材料和包含f电子的元素;  介电性质:波恩有效电荷、静态介电常数张量、极化率张量;  力学性质:弹性力常数张量,体模量,剪切模量,杨氏模量,泊松比;热力学性质:声子态密度、色散谱、熵、焓、自由能、零点能、德拜温度、等容热容随温度的变化曲线;  光学性质:红外光谱、拉曼光谱5.0、核磁共振谱(NMR CASTEP,可用DFT+U)、电子能量损失谱4.4(旋轨耦合效应5.5)、X射线吸收谱4.4(旋轨耦合效应5.5)、光频介电常数虚(实)部、吸收系数、折射率、能量损失函数、光导率虚(实)部;  动力学计算:支持NVE、NVT、NPT以及NPH等系综,以及多种控温控压函数;
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值