在 docker 中为 Ubuntu 配置 MySQL8 环境

文章详细记录了在Docker的Ubuntu环境中配置MySQL时遇到的几个问题,包括启动报错、root用户权限丢失及恢复、开启远程连接、查询MySQL端口、获取表头字段以及创建用户并授权。此外,还提到了Django使用数据库时需要修改setting.py的情况,特别是当使用mysql-connector-python作为数据库引擎时。
摘要由CSDN通过智能技术生成

记录在 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 用户开启远程连接


报错:mysql启动报错之[ERROR] Found option without preceding group in config file /etc/my.cnf at line

解决:在 /etc/mysql/my.cnf (如果在该目录下找不到,不排除在其他目录下的可能性)首行添加 [mysqld],如下图

问题:root 用户丢失权限后,为 root 用户恢复权限

参考:(38条消息) [mysql] root权限丢失恢复 完全菜鸟教程_Takio_的博客-CSDN博客

问题:root 用户开启远程连接

解决:

进入 mysql:mysql -u root -p

使用 mysql 库:mysql > use mysql;  (注意非划线部分才是需要输入的命令,下同)

修改 root 用户为可远程连接:mysql > update user set host='%' where user='root';

刷新权限:mysql > flush privileges;

问题:不知道 mysql 端口

解决:不知道mysql端口的可以在登录mysql后输入

mysql > show global variables like 'port';

问题:获取 mysql 数据库表表头所有字段

解决: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博客,该博客还提供了撤销权限的内容

问题:docker 中 django 使用数据库时需要修改 setting.py 中的数据库引擎参数

描述: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(上一段问题的解决方法里提到了这点)。虽然很怪,不知道对大家的报错有没有什么参考价值,但还是记在这里!

后面在执行文件的时候遇到了问题,这是因为不同平台生成的可执行文件不兼容,虽然几乎与数据库无关,但也记录在这里。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值