在 docker 中为 Ubuntu 配置 MySQL8 环境

记录在 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],如下图

在 docker 中为 Ubuntu 配置 MySQL8 环境_第1张图片

问题: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 中数据库如下

在 docker 中为 Ubuntu 配置 MySQL8 环境_第2张图片

数据库配置中 Host 为 localhost,port 为 3306。因为我的 ubuntu 在 docker里,所以我的数据库引擎由 django.db.backends.mysql 修改为了 mysql.connector.django(上一段问题的解决方法里提到了这点)。虽然很怪,不知道对大家的报错有没有什么参考价值,但还是记在这里!

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

你可能感兴趣的:(mysql,ubuntu,docker)