<?xml version="1.0" encoding="UTF-8"?><rss version="2.0"
	xmlns:content="http://purl.org/rss/1.0/modules/content/"
	xmlns:wfw="http://wellformedweb.org/CommentAPI/"
	xmlns:dc="http://purl.org/dc/elements/1.1/"
	xmlns:atom="http://www.w3.org/2005/Atom"
	xmlns:sy="http://purl.org/rss/1.0/modules/syndication/"
	xmlns:slash="http://purl.org/rss/1.0/modules/slash/"
	>

<channel>
	<title>mysql8.0 &#8211; 科技改变生活-雨落星辰</title>
	<atom:link href="https://p1e.cn/html/tag/mysql8-0/feed" rel="self" type="application/rss+xml" />
	<link>https://p1e.cn</link>
	<description>所有的伟大,都源于一个勇敢的开始</description>
	<lastBuildDate>Tue, 27 Apr 2021 00:35:42 +0000</lastBuildDate>
	<language>zh-Hans</language>
	<sy:updatePeriod>
	hourly	</sy:updatePeriod>
	<sy:updateFrequency>
	1	</sy:updateFrequency>
	<generator>https://wordpress.org/?v=6.7.2</generator>
	<item>
		<title>织梦dedecms使用Mysql8.0无法登录后台的解决办法</title>
		<link>https://p1e.cn/html/2933.html</link>
					<comments>https://p1e.cn/html/2933.html#respond</comments>
		
		<dc:creator><![CDATA[Naoki]]></dc:creator>
		<pubDate>Tue, 27 Apr 2021 00:35:42 +0000</pubDate>
				<category><![CDATA[运维笔记]]></category>
		<category><![CDATA[dedecms]]></category>
		<category><![CDATA[mysql8.0]]></category>
		<guid isPermaLink="false">https://www.815494.com/?p=2933</guid>

					<description><![CDATA[今天一个客户联系我们的技术，反馈说安装之后，但是登录后台，一直提示用户名不存在。通常这个原因有两个（1、数据库链接信息不对  2、数据库表中的用户名不是默认的admin，被修改过）经过多发查证，这两个原因都被排除了，最后发现原来这位客户用的是mysql8.0的数据库。 因mysql 8.0新制定的语句表名限制条件被dede自带的后台用户登录检查语句指定表别名所违背而引起的bug。如何解决呢？ 找到dedecms的文件目录, 在include子目录下找到userlogin.class.php, 249行左右看到如下语]]></description>
										<content:encoded><![CDATA[<div>
<p>今天一个客户联系我们的技术，反馈说安装之后，但是登录后台，一直提示用户名不存在。通常这个原因有两个（1、数据库链接信息不对  2、数据库表中的用户名不是默认的admin，被修改过）经过多发查证，这两个原因都被排除了，最后发现原来这位客户用的是mysql8.0的数据库。</p>
<p>因mysql 8.0新制定的语句表名限制条件被dede自带的后台用户登录检查语句指定表别名所违背而引起的bug。如何解决呢？</p>
</div>
<div>找到dedecms的文件目录, 在include子目录下找到userlogin.class.php, 249行左右看到如下语句:</div>
<pre>//只允许用户名和密码用0-9,a-z,A-Z,'@','_','.','-'这些字符
$this-&gt;userName = preg_replace("/[^0-9a-zA-Z_@!\.-]/", '', $username);
$this-&gt;userPwd = preg_replace("/[^0-9a-zA-Z_@!\.-]/", '', $userpwd);
$pwd = substr(md5($this-&gt;userPwd), 5, 20);
$dsql-&gt;SetQuery("SELECT admin.*,atype.purviews FROM `dede_admin` admin LEFT JOIN `dede_admintype` atype ON atype.rank=admin.usertype WHERE admin.userid LIKE '".$this-&gt;userName."' LIMIT 0,1");
$dsql-&gt;Execute();
$row = $dsql-&gt;GetObject();
</pre>
<p>其中SetQuery就是设定将要执行的sql语句, 下一行Execute()来执行这个设定好语句，我们从语句里面改。改成如下：</p>
<pre>
//只允许用户名和密码用0-9,a-z,A-Z,'@','_','.','-'这些字符
$this-&gt;userName = preg_replace("/[^0-9a-zA-Z_@!\.-]/", '', $username);
$this-&gt;userPwd = preg_replace("/[^0-9a-zA-Z_@!\.-]/", '', $userpwd);
$pwd = substr(md5($this-&gt;userPwd), 5, 20);
$dsql-&gt;SetQuery("SELECT admi.*,atype.purviews FROM `dede_admin` admi LEFT JOIN `dede_admintype` atype ON atype.rank=admi.usertype WHERE admi.userid LIKE '".$this-&gt;userName."' LIMIT 0,1");
$dsql-&gt;Execute();
$row = $dsql-&gt;GetObject();
</pre>
<div>这样一来，表的别名从admin删去一个n被改成admi, 就可以正常登录后台了。</div>
<div></div>]]></content:encoded>
					
					<wfw:commentRss>https://p1e.cn/html/2933.html/feed</wfw:commentRss>
			<slash:comments>0</slash:comments>
		
		
			</item>
	</channel>
</rss>
