Laravel Sail中无法以MySQL root用户身份登录的问题
Laravel Sail MySQL 登录权限问题解决方法
问题描述
尝试给sail MySQL用户授予权限,但在主机项目目录执行sail mysql -u root -p登录后,实际身份仍是sail用户,执行授权命令时报错:
ERROR 1045 (28000): Access denied for user 'sail'@'%' (using password: YES)
执行SELECT CURRENT_USER();验证身份,返回结果确认为sail用户:
+----------------+ | CURRENT_USER() | +----------------+ | sail@% | +----------------+ 1 row in set (0.00 sec)
另外尝试sail root-shell后登录MySQL,遇到socket连接错误:
ERROR 2002 (HY000): Can't connect to local MySQL server through socket '/var/run/mysqld/mysqld.sock' (2)
注:PHPStorm数据库浏览器可正常以root身份连接MySQL。
解决方法
方法1:显式指定root连接参数
Laravel Sail的mysql命令默认会读取sail用户的环境变量,需要手动指定主机和root密码(密码取自项目根目录.env文件中的DB_PASSWORD):
sail mysql -u root -p --host=127.0.0.1
输入密码登录后,执行授权命令:
GRANT ALL PRIVILEGES ON *.* TO 'sail'@'%' WITH GRANT OPTION; FLUSH PRIVILEGES;
方法2:直接进入MySQL容器操作
- 先查看MySQL容器名称:
docker ps
找到类似laravel.test-mysql-1的容器名称
2. 进入容器内部的MySQL终端,直接用root身份登录:
docker exec -it [容器名称] mysql -u root -p
输入.env中的DB_PASSWORD后,即可正常执行权限操作。
方法3:校验配置并重启Sail
确认项目根目录.env文件的数据库配置正确:
DB_CONNECTION=mysql DB_HOST=mysql DB_PORT=3306 DB_DATABASE=laravel DB_USERNAME=sail DB_PASSWORD=your_password_here
然后重启Sail服务:
sail down -v sail up -d
内容的提问来源于stack exchange,提问作者Cloudboy
相关产品推荐
相关产品推荐

