Configuratiebestanden (MySQL): verschil tussen versies

Uit De Vliegende Brigade
Naar navigatie springen Naar zoeken springen
Regel 33: Regel 33:
  
 
== Niet meer spoorzoeken ==
 
== Niet meer spoorzoeken ==
 
Zie de uitleg in bestand mysql.cnf.
 
  
 
Voor systeem-brede aanpassingen:
 
Voor systeem-brede aanpassingen:
  
 
<pre>
 
<pre>
sudo rm /etc/mysql my.cnf
+
cd /etc/mysql
sudo cp /etc/mysql/mysql.cnf my.cnf
+
sudo mv my.cnf my.cnf.oud
 +
sudo cp mysql.cnf my.cnf
 
</pre>
 
</pre>
  
 
Gebruik nu bestand <code>my.cnf</code> voor eigen instellingen.
 
Gebruik nu bestand <code>my.cnf</code> voor eigen instellingen.
  
Verder vind je default-instellingen in <code>/etc/mysql/mysql.conf.d</code> - Handig om dingen af te kijken.
+
* 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 ==

Versie van 28 mei 2020 12:22

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.

Spoorzoeken

Er is een verwarrend woud aan placeholder-configuratiebestanden, die ook nog 's allemaal naar elkaar lijken te verwijzen:

/etc

* /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

Maar daar houdt het niet op, want dit is de inhoud van de 'placeholder' files hierboven:

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

Home dir

In je home dit heb je een bestand .my.cnf.

Niet meer spoorzoeken

Voor systeem-brede aanpassingen:

cd /etc/mysql
sudo mv my.cnf my.cnf.oud
sudo cp mysql.cnf my.cnf

Gebruik nu bestand my.cnf voor eigen instellingen.

  • Bron: Uitleg in bestand mysql.cnf
  • Verder vind je default-instellingen in /etc/mysql/mysql.conf.d/mysql.cnf - Handig om dingen af te kijken.

.my.cnf

In je home dir staat doorgaans een bestand .my.cnf. 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

Backups

Configuratiebestanden moeten welliswaar de extensie .cnf hebben, maar niet alle bestanden met de extensie .cnf worden automatisch uitgevoerd. Je kunt dus backups maken met namen zoals my.cnf.bk01.

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 = ""

En het werkt:

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

Voorbeeld: Mijn /etc/mysql/my.cnf (zomer 2018)

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

# Datadir is in my Dropbox
##########################
#
# Werkt niet!
#
# datadir = /home/strompf/Dropbox/.mysql/storage

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

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

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

Zie ook