sql >> Database >  >> RDS >> Mysql

Een standaard MySQL/MariaDB-gegevensmap in Linux wijzigen

Nadat u de componenten van een LAMP-stack op een CentOS/RHEL 7-server hebt geïnstalleerd, zijn er een aantal dingen die u misschien wilt doen.

Sommige hebben te maken met het verhogen van de beveiliging van Apache en MySQL / MariaDB, terwijl andere al dan niet toepasbaar zijn volgens onze instellingen of behoeften.

Op basis van het verwachte gebruik van de databaseserver willen we bijvoorbeeld de standaard gegevens . wijzigen map (/var/lib/mysql ) naar een andere locatie. Dit is het geval wanneer een dergelijke map naar verwachting zal groeien vanwege het hoge gebruik.

Anders, het bestandssysteem waar /var wordt opgeslagen, kan op een gegeven moment instorten waardoor het hele systeem uitvalt. Een ander scenario waarbij het wijzigen van de standaardmap is wanneer we een speciale netwerkshare hebben die we willen gebruiken om onze werkelijke gegevens op te slaan.

Om deze reden zullen we in dit artikel uitleggen hoe u de standaard MySQL / MariaDB-gegevensmap kunt wijzigen in een ander pad op een CentOS/RHEL 7-server en Ubuntu/Debian-distributies.

Hoewel we MariaDB . zullen gebruiken , de concepten die worden uitgelegd en de stappen die in dit artikel worden genomen, zijn zowel van toepassing op MySQL en naar MariaDB tenzij anders vermeld.

De standaard MySQL/MariaDB-gegevensdirectory wijzigen

Opmerking :We gaan ervan uit dat onze nieuwe gegevensmap /mnt/mysql-data is . Het is belangrijk op te merken dat deze map eigendom moet zijn van mysql:mysql .

# mkdir /mnt/mysql-data
# chown -R mysql:mysql /mnt/mysql-data

Voor uw gemak hebben we het proces opgedeeld in 5 gemakkelijk te volgen stappen:

Stap 1:Identificeer de huidige MySQL-gegevensdirectory

Om te beginnen is het waardig en goed om de huidige gegevensmap te identificeren met behulp van de volgende opdracht. Ga er niet zomaar vanuit dat het nog steeds /var/lib/mysql is omdat het in het verleden veranderd had kunnen worden.

# mysql -u root -p -e "SELECT @@datadir;"

Nadat u het MySQL-wachtwoord hebt ingevoerd, moet de uitvoer vergelijkbaar zijn met.

Stap 2:Kopieer MySQL Data Directory naar een nieuwe locatie

Om gegevensbeschadiging te voorkomen, moet u de service stoppen als deze momenteel actief is voordat u verdergaat. Gebruik de systemd bekende commando's om dit te doen:

------------- On SystemD ------------- 
# systemctl stop mariadb
# systemctl is-active mariadb

------------- On SysVInit ------------- 
# service mysqld stop
# service mysqld status

OR

# service mysql stop
# service mysql status

Als de service is uitgeschakeld, zou de uitvoer van het laatste commando als volgt moeten zijn:

Kopieer vervolgens recursief de inhoud van /var/lib/mysql naar /mnt/mysql-data originele rechten en tijdstempels behouden:

# cp -R -p /var/lib/mysql/* /mnt/mysql-data

Stap 3:Configureer een nieuwe MySQL-gegevensdirectory

Bewerk het configuratiebestand (my.cnf ) om de nieuwe gegevensmap aan te geven (/mnt/mysql-data in dit geval).

# vi /etc/my.cnf
OR
# vi /etc/mysql/my.cnf

Zoek de [mysqld] en [client] secties en breng de volgende wijzigingen aan:

Under [mysqld]:
datadir=/mnt/mysql-data
socket=/mnt/mysql-data/mysql.sock

Under [client]:
port=3306
socket=/mnt/mysql-data/mysql.sock

Sla de wijzigingen op en ga verder met de volgende stap.

Stap 4:Stel de SELinux-beveiligingscontext in op de gegevensmap

Deze stap is alleen van toepassing op RHEL/CentOS en zijn derivaten.

Voeg de SELinux beveiligingscontext toe aan /mnt/mysql-data voordat u MariaDB opnieuw start.

# semanage fcontext -a -t mysqld_db_t "/mnt/mysql-data(/.*)?"
# restorecon -R /mnt/mysql-data

Start vervolgens de MySQL-service opnieuw.

------------- On SystemD ------------- 
# systemctl stop mariadb
# systemctl is-active mariadb

------------- On SysVInit ------------- 
# service mysqld stop
# service mysqld status

OR

# service mysql stop
# service mysql status

Gebruik nu hetzelfde commando als in Stap 1 om de locatie van de nieuwe gegevensmap te verifiëren:

# mysql -u root -p -e "SELECT @@datadir;"

Stap 5:Maak een MySQL-database om de gegevensmap te bevestigen

Log in op MariaDB, maak een nieuwe database aan en controleer vervolgens /mnt/mysql-data :

# mysql -u root -p -e "CREATE DATABASE tecmint;"

Gefeliciteerd! U hebt de gegevensmap voor MySQL of MariaDB met succes gewijzigd.

Samenvatting

In dit bericht hebben we besproken hoe u de gegevensmap kunt wijzigen in een MySQL- of MariaDB-server die draait op CentOS/RHEL 7 en Ubuntu/Debian-distributies.

Heeft u naar aanleiding van dit artikel vragen of opmerkingen? Laat het ons gerust weten via het onderstaande formulier - we zijn altijd blij om van je te horen!


  1. Wat is het maximale aantal kolommen in een PostgreSQL-selectiequery?

  2. Hoe SQLite-resultaten op te maken als een tabel

  3. Op upgrade-methode wordt niet gebeld in Android sqlite

  4. Het SQL Server-transactielogboek, deel 3:Basisprincipes van logboekregistratie