В Kubuntu 18 я создаю докер для приложения laravel 6 с определенным mysql:
mysql:
container_name: "vanilla-crm-db"
image: mysql:5.7
environment:
MYSQL_ROOT_PASSWORD: "MYSQL_ROOT_PASSWORD"
MYSQL_DATABASE: "vanilla-crm-dev"
MYSQL_USER: "MYSQL_USER"
MYSQL_PASSWORD: "MYSQL_PASSWORD"
ports:
- "3330:3306"
volumes:
- "./docker/mysql/data:/var/lib/mysql"
И у меня это работает. Я использую MySql Workbench 6.3 для доступа к БД. Текст Я делаю http-тесты, и мне нужно создать для этого новую базу данных и загрузить в нее дамп моей базы данных. Имя этой базы данных записано в config / database.php в блоке mysql_testing.
Я открываю Workbench и пытаюсь создать новую базу данных: https://prnt.sc/unjie8 Но я не нахожу опцию «Создать базу данных», но вижу опцию «Создать новую схему» и в предварительном просмотре sql-инструкции я вижу команду
CREATE SCHEMA `vanilla-crm-testing` ;
Я ожидала,
Create database ...
Команда. Это то же самое?
И ошибка следующая:
Operation failed: There was an error while applying the SQL script to the database.
Executing:
CREATE SCHEMA `vanilla-crm-testing` ;
ERROR 1044: Access denied for user 'vanilla-crm-usr'@'%' to database 'vanilla-crm-testing'
SQL Statement:
CREATE SCHEMA `vanilla-crm-testing`
Какой правильный способ создать тестовую базу данных?
ОБНОВЛЕНО: Я попытался создать новую базу данных в консоли mysql, например:
mysql
CREATE DATABASE vanilla-crm-testing;
Но я получил ошибку в командной строке докера:
$ docker-compose exec app bash
root@09649d3a2b81:/app# mysql
bash: mysql: command not found
В моем приложении Docker в Dockerfile есть:
FROM php:7.3-apache
...
RUN apt-get update && apt-get install --no-install-recommends -y \
apt-utils ghostscript jq libicu-dev libmagick++-dev libpq-dev libfreetype6-dev libjpeg62-turbo-dev zlib1g-dev libzip-dev git zip && \
docker-php-ext-install intl && \
docker-php-ext-install opcache && \
docker-php-ext-install pdo_mysql && \
И больше никаких команд mysql. Есть ли еще какие-то пакеты, которые мне нужно установить в Dockerfile, чтобы иметь консоль mysql под докером?
ОБНОВЛЕНО №2: Я вхожу в bash командой:
docker-compose exec mysql bash
root@f216ef80c104:/# uname -a
Linux f216ef80c104 4.15.0-118-generic #119-Ubuntu SMP Tue Sep 8 12:30:01 UTC 2020 x86_64 GNU/Linux
Где mysql - имя_контейнера в docker-compose.yml
Обычно я вхожу в консоль mysql с командой:
mysql -u root -h localhost -p
Но каков должен быть формат этой команды в консоли докера? Я пробовал несколько способов и потерпел неудачу ...
ОБНОВЛЕНО №3: Я установил DBeaver версии 7.2.1.202009201907 и вошел в моя база данных и попытался создать новую базу данных для тестирования. У меня ошибка: https://prnt.sc/uol0z7
Как это исправить? Должен ли я добавить еще несколько правильных определений контейнеров mysql?
Благодарность!
1 ответ
Чтобы ответить на ваш вопрос, похоже, ваша основная проблема заключается в том, что вы пытаетесь создать новую тестовую базу данных, но вы входите в систему с пользователем без полномочий root. Пользователь без полномочий root имеет очень мало прав для выполнения некоторых операций. Вот почему вы получили это сообщение об ошибке и не можете создать новую базу данных. Чтобы решить эту проблему, попробуйте войти в систему с пользователем root и убедитесь, что ваша конфигурация Dbeaver верна:
host: 127.0.0.1
port: <Exposed MySQL port based on your docker-compose, e.g: 3330>
username: root
password: <MYSQL_ROOT_PASSWORD from your docker-compose>
С пользователем root вы сможете создавать любую новую базу данных. Другое дело, если вы хотите подключиться с помощью команды mysql cli, убедитесь, что вы также указали правильный порт для контейнера докеров. Команда должна быть такой:
mysql -u root -h 127.0.0.1 -P <Exposed MySQL port based on your docker-compose, e.g: 3330> -p
Надеюсь, это поможет и решит вашу проблему. :)
Похожие вопросы
Новые вопросы
mysql
MySQL — это бесплатная система управления реляционными базами данных (RDBMS) с открытым исходным кодом, которая использует язык структурированных запросов (SQL). НЕ ИСПОЛЬЗУЙТЕ этот тег для других БД, таких как SQL Server, SQLite и т. д. Это разные БД, которые используют свои собственные диалекты SQL для управления данными. В вопросе всегда указывайте точную версию сервера. Версии 5.x сильно отличаются по своим возможностям от версий 8+.