Docker MySQL无法被宿主机访问如何解决
1 问题描述
Docker启动MySQL容器后,创建一个localhost访问的用户:
create user test@localhost identified by 'test'
;
但是在宿主机中无法通过该用户登录:
mycli -u test 2 原因在Docker中的MySQL创建localhost的用户只能在Docker内部访问,而不能通过外部访问。
至于为什么能在宿主机访问root,是因为默认存在两个root,分别是:
root@localhost
root@%
而test只有一个localhost:
3 解决方案创建test@%或者创建test@172.17.0.1即可:
create user test@% identified by 'test'
;
create user test@172.17.0.1 identified by '
test'
;
缓存是提高应用程序性能的重要手段,ThinkPHP默认开启了缓存机制,但在开发过程中,我们常常需要强制清除缓存,以便及时查看效果。那么,如何在ThinkPHP中强制清除缓存呢?
一、清除文件缓存
首先,我们需要了解ThinkPHP提供了哪些方式来清除缓存。文件缓存是ThinkPHP常用的一种缓存方式,我们可以通过删除缓存文件来清除缓存。具体操作如下:
1. 在应用程序的运行目录下,打开Runtime目录,即可看到缓存文件的存放位置。
2. 找到需要清除的缓存文件,直接删除即可。也可以删除Runtime目录下所有文件来清除全部缓存。
二、清除Memcache和Redis缓存
同时,ThinkPHP还支持Memcache和Redis缓存方式,我们可以通过调用缓存类的clear方法来清除缓存。具体操作如下:
1. 在config.php文件中配置缓存方式为Memcache或Redis。
2. 在控制器中通过调用缓存类的clear方法来清除缓存。例如:Cache::getInstance('memcache')->clear()。
三、添加调试模式下的清除缓存按钮
再次,ThinkPHP提供了一个更方便的方式来清除缓存,即添加调试模式下的清除缓存按钮。具体操作如下:
1. 在config.php文件中开启调试模式,即设置APP_DEBUG为true。
2. 在页面底部添加清除缓存按钮的HTML代码。例如:\">清除缓存
3. 在Index控制器中添加清除缓存方法,例如:
public function clearCache(){
$cache = Cache::getInstance();
$cache->clear();
$this->redirect('Index/index');
}
清除缓存是开发过程中必不可少的一项操作,掌握了以上方式,相信可以更加灵活、高效地使用ThinkPHP应用程序开发框架。