sql >> Databáze >  >> RDS >> Mysql

Jak zakázat přísný režim MySQL

Přísný režim MySQL a MariaDB řídí, jak jsou zpracovávány neplatné nebo chybějící hodnoty v dotazech na změnu dat; to zahrnuje příkazy INSERT, UPDATE a CREATE TABLE. S povoleným přísným režimem MySQL, což je výchozí stav, mohou neplatná nebo chybějící data způsobit varování nebo chyby při pokusu o zpracování dotazu.

Když je přísný režim zakázán, u stejného dotazu by byly upraveny neplatné nebo chybějící hodnoty a vyvolalo by jednoduché varování. To se může zdát jako preferovaný výsledek, avšak s vypnutým přísným režimem mohou některé akce způsobit neočekávané výsledky; například, když vkládaná hodnota překročí maximální povolený počet znaků, bude zkrácena, aby odpovídala limitu.

Existuje několik důvodů, proč může být nutné zakázat přísný režim MySQL, ale nejběžnější je, když server běží WHMCS – to je požadavek tohoto nástroje.

Předletová kontrola

  • Tyto pokyny jsou určeny speciálně pro deaktivaci přísného režimu MySQL na spravovaném Liquid Web serveru s cPanel.
  • Na serveru by mělo být spuštěno MySQL 5.6/5.7 nebo MariaDB 10.x
  • Abyste mohli postupovat podle tohoto návodu, budete potřebovat přístup na úrovni příkazového řádku a kořenového adresáře prostřednictvím SSH.

Krok č. 1:Vždy zálohujte!

Při každé úpravě souborů na serveru je vždy nejlepším postupem předem provést nějakou formu zálohy. To zajišťuje, že máte způsob, jak vrátit změny, pokud se něco pokazí; je to také užitečné, protože pomáhá sledovat, kdy a jaké změny byly provedeny.

Při přihlášení do SSH s uživatelem root proveďte následující:

cp -a /usr/my.cnf{,.strict.bak}
cp -a /etc/my.cnf{,.strict.bak}

Výše uvedený příkaz používá „roztažení složené závorky BASH“ k vytvoření záložní kopie souboru v jeho původním adresáři.

Krok č. 2:Zakažte přísný režim MySQL

V závislosti na serveru a aktuální konfiguraci budete možná muset upravit jeden nebo oba z následujících souborů na serveru. Obecně platí, že příslušné konfigurační řádky jsou pouze v jedné z nich, ale může to být v kterékoli z nich, aniž by to způsobovalo problémy; takže obecně je nejlepší zkontrolovat obojí.

Chcete-li soubory upravit, otevřete soubor pomocí svého oblíbeného editoru příkazového řádku. V tomto příkladu používáme „vim“.

vim /usr/my.cnf
vim /etc/my.cnf

Ve vimu můžete stisknutím „a“ nebo „i“ vstoupit do režimu vkládání textu; stisknutím klávesy escape (Esc) na klávesnici se vrátíte do příkazového režimu. Připomenutí úprav souborů pomocí vim najdete v našem kurzu pro nového uživatele:Přehled textového editoru Vim.

V každém výše uvedeném souboru budete hledat řádek s následujícím obsahem:

sql_mode=NO_ENGINE_SUBSTITUTION,STRICT_TRANS_TABLES

Pokud najdete řádek podobný výše uvedenému, který nastavuje proměnnou `sql_mode`, pak jej budete muset nahradit následujícím řádkem, abyste zakázali přísný režim MySQL.

sql_mode=""

Po provedení této úpravy nebo po potvrzení, že soubor není třeba upravovat, soubor uložíte a zavřete.

Krok č. 3:Restartujte službu MySQL

A konečně, aby tyto změny byly účinné, budete muset restartovat službu MySQL, protože bude číst konfigurační soubory pouze při prvním načtení. Chcete-li přinutit MySQL používat nové konfigurační soubory, udělejte následující:

Pro servery CentOS 7:
systemctl restart mysql

Pro CentOS 6 a starší:
/etc/init.d/mysql restart

Po zadání tohoto příkazu na serveru se služba MySQL restartuje a načte provedené změny. Pokud byly dodrženy a dokončeny všechny pokyny, měl by být přísný režim MySQL nyní zakázán.

Chcete-li ověřit, zda byl proces dokončen správně, můžete spustit následující:

mysql -e "SELECT @@sql_mode;"

Výstup může vypadat podobně jako následující:

+--------------------------------------------+
| @@sql_mode
+--------------------------------------------+
| NO_AUTO_CREATE_USER
+--------------------------------------------+

Pokud máte nějaké otázky nebo se vám nelíbilo provádět tyto změny sami, neváhejte kontaktovat Heroic Support®.


  1. Najít a nahradit regulární výraz v Postgresu

  2. SQLiteReadOnlyDatabaseException:pokus o zápis databáze pouze pro čtení (kód 1032)

  3. Jak zazipovat soubor v PL/SQL?

  4. Vraťte seznam časových pásem podporovaných PostgreSQL