logo
15.01.2020 17:37
1
Zdarec, zkouším si rozjet MySql v docker kontejneru, data chci mít u sebe an disku, ale mám nějaký problém s právy. Zkoušel jsem x možností co google poradil, ale pešek. Dík za každou radu)

Kód:
version: '3.7'

services:
  db:
    image: mysql:latest
    container_name: test-mysql
    ports:
      - 3307:3306
    command: --default-authentication-plugin=mysql_native_password
    restart: always
    environment:
      MYSQL_ROOT_PASSWORD: test
      MYSQL_DATABASE: test
      MYSQL_USER: test
      MYSQL_PASSWORD: test
    volumes:
      - /data/mysql:/var/lib/mysql
volumes:
  mysql_data:
Kód:
test-mysql | 2020-01-15 13:49:00+00:00 [Note] [Entrypoint]: Entrypoint script for MySQL Server 8.0.19-1debian9 started.
test-mysql | 2020-01-15 13:49:01+00:00 [Note] [Entrypoint]: Switching to dedicated user 'mysql'
test-mysql | 2020-01-15 13:49:01+00:00 [Note] [Entrypoint]: Entrypoint script for MySQL Server 8.0.19-1debian9 started.
test-mysql | 2020-01-15 13:49:01+00:00 [Note] [Entrypoint]: Initializing database files
test-mysql | 2020-01-15T13:49:01.147377Z 0 [Warning] [MY-011070] [Server] 'Disabling symbolic links using --skip-symbolic-links (or equivalent) is the default. Consider not using this option as it' is deprecated and will be removed in a future release.
test-mysql | 2020-01-15T13:49:01.147517Z 0 [System] [MY-013169] [Server] /usr/sbin/mysqld (mysqld 8.0.19) initializing of server in progress as process 46
test-mysql | mysqld: Cannot change permissions of the file 'ca.pem' (OS errno 1 - Operation not permitted)
test-mysql | 2020-01-15T13:51:07.829207Z 0 [ERROR] [MY-010295] [Server] Could not set file permission for ca.pem
test-mysql | 2020-01-15T13:51:07.829553Z 0 [ERROR] [MY-013236] [Server] The designated data directory /var/lib/mysql/ is unusable. You can remove all files that the server added to it.
test-mysql | 2020-01-15T13:51:07.830054Z 0 [ERROR] [MY-010119] [Server] Aborting
test-mysql | 2020-01-15T13:51:09.762689Z 0 [System] [MY-010910] [Server] /usr/sbin/mysqld: Shutdown complete (mysqld 8.0.19)  MySQL Community Server - GPL.
test-mysql | 2020-01-15 13:51:10+00:00 [Note] [Entrypoint]: Switching to dedicated user 'mysql'
test-mysql | 2020-01-15 13:51:10+00:00 [Note] [Entrypoint]: Entrypoint script for MySQL Server 8.0.19-1debian9 started.
test-mysql | 2020-01-15T13:51:11.268293Z 0 [Warning] [MY-011070] [Server] 'Disabling symbolic links using --skip-symbolic-links (or equivalent) is the default. Consider not using this option as it' is deprecated and will be removed in a future release.
test-mysql | 2020-01-15T13:51:11.268568Z 0 [System] [MY-010116] [Server] /usr/sbin/mysqld (mysqld 8.0.19) starting as process 1
test-mysql | mysqld: Table 'mysql.plugin' doesn't exist
test-mysql | 2020-01-15T13:51:13.780108Z 0 [ERROR] [MY-010735] [Server] Could not open the mysql.plugin table. Please perform the MySQL upgrade procedure.
test-mysql | 2020-01-15T13:51:15.451439Z 0 [Warning] [MY-010015] [Repl] Gtid table is not ready to be used. Table 'mysql.gtid_executed' cannot be opened.
test-mysql | 2020-01-15T13:51:15.547613Z 0 [Warning] [MY-000054] [Server] World-writable config file './auto.cnf' is ignored.
test-mysql | 2020-01-15T13:51:15.548147Z 0 [Warning] [MY-010107] [Server] World-writable config file './auto.cnf' has been removed.
test-mysql | 2020-01-15T13:51:15.549127Z 0 [Warning] [MY-010075] [Server] No existing UUID has been found, so we assume that this is the first time that this server has been started. Generating a new UUID: 19351323-379e-11ea-b028-0242ac170002.
test-mysql | 2020-01-15T13:51:15.965591Z 0 [Warning] [MY-010015] [Repl] Gtid table is not ready to be used. Table 'mysql.gtid_executed' cannot be opened.
test-mysql | 2020-01-15T13:51:16.034640Z 0 [Warning] [MY-010069] [Server] Failed to set up SSL because of the following SSL library error: SSL context is not usable without certificate and private key
test-mysql | mysqld: Cannot change permissions of the file 'private_key.pem' (OS errno 1 - Operation not permitted)
test-mysql | 2020-01-15T13:51:16.181017Z 0 [ERROR] [MY-010295] [Server] Could not set file permission for private_key.pem
test-mysql | 2020-01-15T13:51:16.181610Z 0 [ERROR] [MY-010119] [Server] Aborting
test-mysql | 2020-01-15T13:51:17.197608Z 0 [System] [MY-010910] [Server] /usr/sbin/mysqld: Shutdown complete (mysqld 8.0.19)  MySQL Community Server - GPL.
test-mysql exited with code 1
15.01.2020 23:14
2
Tak asi upravit práva pro private_key.pem.

Jinak jsem viděl napr ispconfig včetně mysql databáze v docker, tak se můžeš inspirovat tam.

Ps: provozovat něco v dokru a obvzlášť tamm mít data doporučuji jen zkušeným linuxovým adminum.
16.01.2020 06:21
3
Původně odeslal josef.jebavy
Tak asi upravit práva pro private_key.pem.

Jinak jsem viděl napr ispconfig včetně mysql databáze v docker, tak se můžeš inspirovat tam.

Ps: provozovat něco v dokru a obvzlášť tamm mít data doporučuji jen zkušeným linuxovým adminum.
Mam to na localhostu a prave ze v containeru data chtit nechci, proto jsem si vytvoril na disku slozku kde by se mela inicializovat mysql. Musim si s tim jeste pohrat.
16.01.2020 09:31
4
u zmiňovaného souboru private_key.pem musí být write práva pro others nebo vlastník musí být stejné uid jako je mysql v docker containeru. Také nedoporučuji to takhle dělat, když se zasekneš už na tomhle, můžeš velice rychle přijít o data, cesta k provozu mysql v dockeru nemusí být přímočará.
16.01.2020 11:35
5
Původně odeslal TomášX
u zmiňovaného souboru private_key.pem musí být write práva pro others nebo vlastník musí být stejné uid jako je mysql v docker containeru. Také nedoporučuji to takhle dělat, když se zasekneš už na tomhle, můžeš velice rychle přijít o data, cesta k provozu mysql v dockeru nemusí být přímočará.
Prave jsem vsude cetl, ze tohle je nejlepsi varianta jak prave o ty data neprijit. Po smazani containeru zustavaji stale na disku a kdykoliv na dane slozce muzu spustit novy container.
16.01.2020 11:42
6
ano, na dané složce spouštít nový container, který se složkou může plně manipulovat a jsi závislý na nějaké bootstrap scripntu unvnitř containeru, který tam autor sám napsal, netušiš co dělá, nemáš nad tím kontrolou a může takhle dojít ke smazání dat jen drobným překlepem, naproti tomu mysql/mariadb z balíčku z oficiálních repositářů je pod kontrolou více lidí, dodržují se určitá pravidla, při povýšení verzí tam máš upgrade průvodce atd. atd.

Co tě vede k přesvědčení, že v dockeru to budeš mít jednodušší? Neřikám, že to nejde v dockeru udělat jednodušší, ale to znamená nějakou práci, není to samo.
16.01.2020 11:57
7
Původně odeslal TomášX
ano, na dané složce spouštít nový container, který se složkou může plně manipulovat a jsi závislý na nějaké bootstrap scripntu unvnitř containeru, který tam autor sám napsal, netušiš co dělá, nemáš nad tím kontrolou a může takhle dojít ke smazání dat jen drobným překlepem, naproti tomu mysql/mariadb z balíčku z oficiálních repositářů je pod kontrolou více lidí, dodržují se určitá pravidla, při povýšení verzí tam máš upgrade průvodce atd. atd.

Co tě vede k přesvědčení, že v dockeru to budeš mít jednodušší? Neřikám, že to nejde v dockeru udělat jednodušší, ale to znamená nějakou práci, není to samo.

to je ofic. balicek z docker hubu, pokud jsi mel na mysli tohle. Nechci delat ugprade verze z 5.7 u sebe na lokalu, Tak to zkousim virtualizovat.
16.01.2020 12:37
8
dobře, ale zítra nad tou složkou můžeš spustit úplně jiný mysql image a tím právě můžeš přijít o data, jde to snadno.

Četl jsi popis na stránkách dockeru? V kapitole Running as an arbitrary user je naznačeno, jak vyřešit problém s právy. Složku na svém disku přidělíš určitému uživateli (id:gid) a poté docker spustít pod tím stejným id:gid.

$ mkdir data
$ ls -lnd data
drwxr-xr-x 2 1000 1000 4096 Aug 27 15:54 data
$ docker run -v "$PWD/data":/var/lib/mysql --user 1000:1000 --name some-mysql -e MYSQL_ROOT_PASSWORD=my-secret-pw -d mysql:tag
16.01.2020 12:53
9
Původně odeslal TomášX
dobře, ale zítra nad tou složkou můžeš spustit úplně jiný mysql image a tím právě můžeš přijít o data, jde to snadno.

Četl jsi popis na stránkách dockeru? V kapitole Running as an arbitrary user je naznačeno, jak vyřešit problém s právy. Složku na svém disku přidělíš určitému uživateli (id:gid) a poté docker spustít pod tím stejným id:gid.
Jasně rozumím, mám to hlavně pro dev. Díky vyzkouším.
17.01.2020 11:13
10
Původně odeslal ifux
Jasně rozumím, mám to hlavně pro dev. Díky vyzkouším.
Jestli můžu doporučit, tak je lepší používat docker-compose. Pak se nemíchají projekty a i práce je jednoduší. Pro ukázku se můžete podívat na dev enviroment pro Drupal 8