thinkphp 链接数据库 密码@符号怎么处理
'DB_DSN'=>'mysql://username:password@localhost:3306/DbName'@后面链接的是服务器地址但是生产环境数据库的密码中有...
'DB_DSN' => 'mysql://username:password@localhost:3306/DbName'
@ 后面 链接的是 服务器地址
但是生产环境数据库的密码中有 @ 字符
'DB_DSN' => 'mysql://user:bb@name@localhost:3306/DbName' 展开
@ 后面 链接的是 服务器地址
但是生产环境数据库的密码中有 @ 字符
'DB_DSN' => 'mysql://user:bb@name@localhost:3306/DbName' 展开
1个回答
展开全部
你试过按照上面是否可行没有?不行的话可否考虑分项
'DB_TYPE' => 'mysql', // 数据库类型
'DB_HOST' => 'localhost', // 服务器地址
'DB_NAME' => 'thinkphp', // 数据库名
'DB_USER' => 'root', // 用户名
'DB_PWD' => '', // 密码
'DB_PORT' => 3306, // 端口
追问
其实我就是这么干的 我链接的是 Mongo 不过这个没关系
以下是我的配置 您看下 服务器地址账户我就不真实写了 主要看我的密码那栏
可能的问题没有描述清楚
'DB_USER' => 'root', // 用户名
'DB_PWD' => 'root@7-30', // 密码
密码中带了一个 @ 符号
追答
我测试了一下,
'DB_DSN' => 'mysql://testexper:root@1-1@localhost:3306/exper',
可以正常连接数据库
所以猜想thinkphp已经做了处理,于是查看thinkphp核心文件的Db.class.php,相关部分
/**
* DSN解析
* 格式: mysql://username:passwd@localhost:3306/DbName
* @static
* @access public
* @param string $dsnStr
* @return array
*/
public function parseDSN($dsnStr) {
if( empty($dsnStr) ){return false;}
$info = parse_url($dsnStr);
if($info['scheme']){
......
}
}
可以发现,用PHP函数parse_url对'DB_DSN'的内容作了处理,具体可以查看该函数
百事牛
2024-10-22 广告
2024-10-22 广告
百事牛是共享提供商,我们提供可靠有效的服务,适当合理的授权费有利于的继续更新优化。同样的事情,同样的方法,百事牛团队十年磨一剑,始终至聚焦在密码恢复领域,深耕于此,我们已研制出有别于其他公司的算法和运算模式, 百事牛的暴力模式加入了分布式点...
点击进入详情页
本回答由百事牛提供
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询