Configuratiebestanden (MySQL): verschil tussen versies

Uit De Vliegende Brigade
Naar navigatie springen Naar zoeken springen
(6 tussenliggende versies door dezelfde gebruiker niet weergegeven)
Regel 1: Regel 1:
Altijd verwarrend waar je systeeminstellingen van MySQL aanpast. Daarnaast is MySQL nogal kritisch als het om wijzigingen gaat. Er zijn twee soorten bestanden: Systeem-wijde instellingen in ''/etc'' en gebruiker-specifieke instellingen in ''~/''. Dit artikel gaat vooral over deze eerste.
+
In MySQL kun je instellingen configureren per gebruiker, of per systeem. Beiden worden in dit artikel behandeld.  
  
== Spoorzoeken ==
+
Let op: MySQL is nogal kritisch als het om wijzigingen gaat. Daarom maak ik soms een backup voor ik iets om zeep help. Als het om MySQL-configuratiebestanden gaat, voeg ik een extensie aan het eind toe. Bv. <code>my.cnf.bk01</code>.
 
 
Er is een verwarrend woud aan placeholder-configuratiebestanden, die ook nog 's allemaal naar elkaar lijken te verwijzen:
 
 
 
=== System-wide ===
 
 
 
<pre>
 
* /etc/mysql/
 
 
 
  * debian.cnf
 
  * debian-start
 
  * my.cnf → /etc/alternatives/my.cnf → /etc/mysql/mysql.cnf (echt waar!)
 
  * my.cnf.fallback
 
  * mysql.cnf
 
 
 
  * mysql.conf.d/
 
    * mysqld.cnf
 
    * mysqld_safe_syslog.cnf
 
</pre>
 
 
 
Maar daar houdt het niet op, want dit is de inhoud van de 'placeholder' files hierboven:
 
 
 
<pre>
 
!includedir /etc/mysql/conf.d/
 
!includedir /etc/mysql/mysql.conf.d/
 
</pre>
 
 
 
=== User-specific ===
 
 
 
In je home dit heb je een bestand <code>.my.cnf</code>.
 
 
 
== Niet meer spoorzoeken ==
 
 
 
Voor systeem-brede aanpassingen:
 
 
 
<pre>
 
cd /etc/mysql
 
sudo mv my.cnf my.cnf.oud
 
sudo cp mysql.cnf my.cnf
 
</pre>
 
 
 
Gebruik nu bestand <code>my.cnf</code> voor eigen instellingen.
 
 
 
* Bron: Uitleg in bestand mysql.cnf
 
* Verder vind je default-instellingen in <code>/etc/mysql/mysql.conf.d/mysql.cnf</code> - Handig om dingen af te kijken.
 
  
 
== .my.cnf ==
 
== .my.cnf ==
  
In je home dir staat doorgaans een bestand <code>.my.cnf</code>. Mijn versie (licht bijgewerkt, april 2020):
+
<code>.my.cnf</code> is het configuratiebestand met gebruiker-specifieke instellingen. Dit bestand staat doorgaans direct in je ''home dir''. Mijn versie (licht bijgewerkt, april 2020):
  
 
<pre>
 
<pre>
Regel 93: Regel 49:
 
</pre>
 
</pre>
  
== Backups van configuratiebestanden ==
+
== Systeembrede instellingen ==
  
Configuratiebestanden moeten welliswaar de extensie <code>.cnf</code> hebben, maar niet alle bestanden met de extensie <code>.cnf</code> worden automatisch uitgevoerd. Je kunt dus backups maken met namen zoals <code>my.cnf.bk01</code>.
+
Het kan verwarrend zijn waar je systeembrede instellingen moet toepassen, maar ingewikkelder dan dit hoeft 't niet te zijn:
 +
 
 +
<pre>
 +
cd /etc/mysql
 +
sudo mv my.cnf my.cnf.bk-org
 +
sudo cp mysql.cnf my.cnf
 +
sudo vim my.cnf
 +
</pre>
 +
 
 +
* Gebruik vervolgens bestand <code>my.cnf</code> voor eigen instellingen
 +
* Default-instellingen vind je in <code>/etc/mysql/mysql.conf.d/mysql.cnf</code> - Handig om dingen af te kijken
 +
* Na aanpassingen moet je de server herstarten, bv. met <code>sudo service mysql restart</code> (niet <code>mysqld</code>)
  
 
== Voorbeeld: Aanpassen secure_file_priv ==
 
== Voorbeeld: Aanpassen secure_file_priv ==
Regel 124: Regel 91:
 
</pre>
 
</pre>
  
En het werkt:
+
gevolgd door
 +
 
 +
<pre>
 +
sudo service mysql restart
 +
</pre>
 +
 
 +
Het resultaat:
  
 
<pre>
 
<pre>
Regel 143: Regel 116:
  
 
<pre>
 
<pre>
#
 
###########################################################################
 
# Defaults
 
###########################################################################
 
#
 
# This line is optional: Server will still start without this line
 
#
 
!includedir /etc/mysql/conf.d/
 
 
 
 
###########################################################################
 
###########################################################################
 
# Strompf - [mysqld]
 
# Strompf - [mysqld]
Regel 183: Regel 146:
 
max_allowed_packet=536870912
 
max_allowed_packet=536870912
  
 +
 +
# log_bin_trust_function_creators
 +
###################################
 +
#
 +
# https://stackoverflow.com/questions/26015160/deterministic-no-sql-or-reads-sql-data-in-its-declaration-and-binary-logging-i
 +
#
 +
log_bin_trust_function_creators = 1;
  
 
###########################################################################
 
###########################################################################

Versie van 5 jul 2020 16:26

In MySQL kun je instellingen configureren per gebruiker, of per systeem. Beiden worden in dit artikel behandeld.

Let op: MySQL is nogal kritisch als het om wijzigingen gaat. Daarom maak ik soms een backup voor ik iets om zeep help. Als het om MySQL-configuratiebestanden gaat, voeg ik een extensie aan het eind toe. Bv. my.cnf.bk01.

.my.cnf

.my.cnf is het configuratiebestand met gebruiker-specifieke instellingen. Dit bestand staat doorgaans direct in je home dir. Mijn versie (licht bijgewerkt, april 2020):

################################################################################################
# [Client]
################################################################################################
#
[client]
host   = localhost
socket = /var/run/mysqld/mysqld.sock


# Specifying user & password to avoid authentication
####################################################
#
user     = supervrouw
password = mijnwachtwoord


# Include comments when importing sql-files
####################################################
#
comments = true


################################################################################################
# [mysqldump]
################################################################################################
#
[mysqldump]


# Include sprocs & functions when making dumps
##############################################
#
routines = true


# Continue with dump despite errors in views
##############################################
#
force = true

Systeembrede instellingen

Het kan verwarrend zijn waar je systeembrede instellingen moet toepassen, maar ingewikkelder dan dit hoeft 't niet te zijn:

cd /etc/mysql
sudo mv my.cnf my.cnf.bk-org
sudo cp mysql.cnf my.cnf
sudo vim my.cnf
  • Gebruik vervolgens bestand my.cnf voor eigen instellingen
  • Default-instellingen vind je in /etc/mysql/mysql.conf.d/mysql.cnf - Handig om dingen af te kijken
  • Na aanpassingen moet je de server herstarten, bv. met sudo service mysql restart (niet mysqld)

Voorbeeld: Aanpassen secure_file_priv

Vantevoren:

mysql> show variables like "secure_file_priv";
+------------------+----------------------------+
| Variable_name    | Value                      |
+------------------+----------------------------+
| secure_file_priv | /var/lib/mysql-files/      |
+------------------+----------------------------+
1 row in set (0,00 sec)

Ik heb bestand /etc/mysql/my.cnf aangepast. Dit is nu het hele bestand:

!includedir /etc/mysql/conf.d/
!includedir /etc/mysql/mysql.conf.d/

##################################################
# HERE IS MY OWN STUFF - STROMPF
##################################################
#
[mysqld]
secure-file-priv = ""

gevolgd door

sudo service mysql restart

Het resultaat:

mysql> show variables like "secure_file_priv";
+------------------+-------+
| Variable_name    | Value |
+------------------+-------+
| secure_file_priv |       |
+------------------+-------+
1 row in set (0,00 sec)

Mijn /etc/mysql/my.cnf (zomer 2020)

De configuratie op m'n laptop. my.cnf.fallback is een werkende backup. my.cnf is het actuele bestand, en dat vind je hiernaast in detail

Complete bestand:

###########################################################################
# Strompf - [mysqld]
###########################################################################
#
[mysqld]


# Remove I/O path restrictions
##############################
#
secure_file_priv=""


# Enable longer concat string
#############################
#
group_concat_max_len = 300000


# Disable MySQL Strict Mode
###########################
#
sql_mode=""


# Increase max_packet_size
###########################
#
max_allowed_packet=536870912


# log_bin_trust_function_creators
###################################
#
# https://stackoverflow.com/questions/26015160/deterministic-no-sql-or-reads-sql-data-in-its-declaration-and-binary-logging-i
#
log_bin_trust_function_creators = 1;

###########################################################################
# Strompf - [client]
###########################################################################
#
# Normally, starting the server takes about a second ("sudo service mysql 
# restart"). Withh these [client] & [mysqldump] sections, this takes about 5
# seconds. I still find it handy to put everyting in this one location,
# especially when collaborating with others on projects
#
#
[client]


# Include comments when importing sql-files
####################################################
#
comments = true


###########################################################################
# Strompf - [mysqldump]
###########################################################################
#
[mysqldump]


# Include sprocs & functions when making dumps
##############################################
#
routines = true


# Continue with dump despite errors in views
##############################################
#
force = true

Zie ook