记录在 docker 中为 Ubuntu 配置 Mysql 环境遇到的问题
参考:(38条消息) Docker中ubuntu安装mysql_南方划水的banana的博客-CSDN博客
目录
报错:mysql启动报错之[ERROR] Found option without preceding group in config file /etc/my.cnf at line
问题:root 用户丢失权限后,为 root 用户恢复权限
问题:root 用户开启远程连接
解决:在 /etc/mysql/my.cnf (如果在该目录下找不到,不排除在其他目录下的可能性)首行添加 [mysqld],如下图
参考:(38条消息) [mysql] root权限丢失恢复 完全菜鸟教程_Takio_的博客-CSDN博客
解决:
进入 mysql:mysql -u root -p
使用 mysql 库:mysql > use mysql; (注意非划线部分才是需要输入的命令,下同)
修改 root 用户为可远程连接:mysql > update user set host='%' where user='root';
刷新权限:mysql > flush privileges;
解决:不知道mysql端口的可以在登录mysql后输入
mysql > show global variables like 'port';
解决:SELECT COLUMN_NAME FROM information_schema.COLUMNS WHERE TABLE_SCHEMA = '库名' AND TABLE_NAME = '表名'
参考:(38条消息) 获取mysql数据库表名、表头信息_数据库表头_周舸洺的博客-CSDN博客
创建用户:create user 'username'@'host' identified by 'password';
授予所有权限:grant all privileges on *.* to 'username'@'%' with grant option;
刷新权限:flush privileges;
参考:(38条消息) mysql8.0数据库添加用户和授权_mysql8 添加用户_liuzh2443的博客-CSDN博客,该博客还提供了撤销权限的内容
描述:django 默认使用的 mysqlclient
需要本地有 mysql 的安装,当 mysql 使用 docker 时无法实现。以下是替代方法
python3 -m pip install mysql-connector-python -i https://pypi.tuna.tsinghua.edu.cn/simple
将 'ENGINE': 'django.db.backends.mysql'
修改为'ENGINE': 'mysql.connector.django'
参考:django连接在docker里的mysql - 简书 (jianshu.com)
问题:
1)后面卡了很久,在 mysql 里用 show global variables like 'port'; 查看了一下端口,发现不是 3306 而是 0
2)我关闭并重新打开了数据库(在ubuntu 里,使用 service mysql stop/start 关闭/打开数据库),发现端口恢复为了 3306
3)这个时候我启动了 django 项目,发现能够连接到数据库了!此时 django 项目 setting.py 中数据库如下
数据库配置中 Host 为 localhost,port 为 3306。因为我的 ubuntu 在 docker里,所以我的数据库引擎由 django.db.backends.mysql 修改为了 mysql.connector.django(上一段问题的解决方法里提到了这点)。虽然很怪,不知道对大家的报错有没有什么参考价值,但还是记在这里!
后面在执行文件的时候遇到了问题,这是因为不同平台生成的可执行文件不兼容,虽然几乎与数据库无关,但也记录在这里。