Kurs "WordPress: Pierwsze kroki" (bezpłatna lekcja)

Wczoraj znajomy poprosił mnie o pomoc – chodziło o wykonanie operacji na bazie MySQL z poziomy skryptu (bash) w Linuxie.

Pomocy oczywiście udzieliłem – akurat wiedziałem jak, i jak to często bywa – przy tej okazji pojawił się pomysł na krótki wpis. A, że temat świeży, to zamiast trafić na obszerną (stety/niestety ;-)) listę „zagadnień/tematów do opisania” leci bezpośrednio do Was, czyli na nasze łamy…

Polecenia MySQL w skryptach Linux/BASH

Metod na wykonanie kodu/zapytania SQL z poziomu skryptu jest pewnie kilka, ja skoncentruje się na moim zdaniem najprostszej, a przynajmniej takiej, która u mnie zawsze działa.

Na potrzeby tego poradnika wykorzystam polecenie/zapytanie które kiedyś demonstrowałem przy okazji poradnika dotyczącego hurtowego kasowania komentarzy (w tym SPAMu) z WordPressa:

DELETE FROM  NAZWA_BAZY_DANYCH.wp_comments WHERE comment_approved = "spam";

Nasze polecenie musimy teraz ubrać w kod, który sprawi, że będzie możliwe wykonanie tego polecenia w skrypcie:

#!/bin/bash

mysql -u UŻYTKOWNIK -pHASŁO <<EOF
   [...]
EOF

Co daje nam taki kod:

#!/bin/bash

mysql -u UŻYTKOWNIK -pHASŁO <<EOF
    DELETE FROM  NAZWA_BAZY_DANYCH.wp_comments WHERE comment_approved = "spam";
EOF

Mam nadzieję, że oczywiste jest, że:

  • Zamiast „UŻYTKOWNIK” podajemy nazwę użytkownika MySQL z odpowiednimi uprawnieniami
  • Zamiast „HASŁO” podajemy hasło dla wybranego użytkownika MySQL
  • Zamiast „NAZWA_BAZY_DANYCH” podajemy nazwę bazy danych, na której chcemy wykonać operacje

Powyższy skrypt po uruchomieniu (i wcześniejszym podaniu nazwy użytkownika, hasła i nazwy bazy danych) spowoduje skasowanie wszystkich komentarzy oznaczonych jako SPAM w naszej stronie opartej o WordPressa.

Gdy nie wiesz jaki skonstruować polecenie – phpMyAdmin Ci pomoże

A teraz coś, o czym nawet bardziej doświadczeni wyjadacze zapominają – za pomocą phpMyAdmin możemy sobie wygenerować zapytanie/polecenie MySQL do późniejszego wykorzystania, co przydaje się zwłaszcza w przypadku bardziej skomplikowanych operacji, i często pozwala zaoszczędzić sporo czasu.

Po wykonaniu dowolnej operacji na bazie z poziomu phpMyAdmin oprócz informacji o wyniku tej operacji, otrzymamy też podgląd wykonanej operacji w formie kodu/zapytania MySQL:

phpmyadmin_sql_update_post-title

UPDATE `NAZWA_BAZY_DANYCH`.`wp_posts` SET `post_title` = 'Art. 213 KK TEST' WHERE `wp_posts`.`ID` =8;

Na powyższym przykładzie była to zmiana nazwy posta o ID=8 na „Art. 213 KK TEST” w bazie danych „NAZWA_BAZY_DANYCH” i tabeli „wp_posts”.

Zmiana kodu MySQL na Linux/BASH

Przed wstawieniem powyższego kodu do naszego skryptu musimy go trochę „zmodyfikować”, co tak naprawdę (w większości przypadków, przynajmniej tych mniej skomplikowanych) sprowadza się do usunięcia „grawisów” (akcent, backticks backquotes) z kodu:

UPDATE NAZWA_BAZY_DANYCH.wp_posts SET post_title = 'Art. 213 KK' WHERE wp_posts.ID=8;

W rezultacie czego otrzymujemy taki skrypt:

#!/bin/bash

mysql -u UŻYTKOWNIK -pHASŁO <<EOF
    UPDATE NAZWA_BAZY_DANYCH.wp_posts SET post_title = 'Art. 213 KK' WHERE wp_posts.ID=8;
EOFF

I to właściwie tyle, pamiętajcie tylko, by przed eksperymentami zrobić kopie zapasową bazy danych – nawet, gdy wydaje się Wam, że wiecie co robicie… :-)

(!) Zgłoś błąd na stronie
Pomogłem? To może postawisz mi wirtualną kawę?
LUTy dla D-Cinelike (DJI Mini 3 Pro, DJI Avata, OSMO Pocket) od MiniFly
Wdrożenie Omnibusa w sklepie na WooCommerce
Jak (legalnie) latać dronem w Kategorii Otwartej
Kurs "WordPress: Pierwsze kroki" (bezpłatna lekcja)
Patryk
Kurs "WordPress: Pierwsze kroki" (bezpłatna lekcja)