Zoeken op website

Hoe u een standaard MySQL/MariaDB-gegevensmap in Linux kunt 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 wellicht wilt doen.

Sommigen van hen hebben te maken met het verhogen van de veiligheid van Apache en MySQL/MariaDB, terwijl andere al dan niet toepasbaar kunnen zijn, afhankelijk van onze opzet of behoeften.

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

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

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

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

De standaard MySQL/MariaDB-gegevensmap 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 eenvoudig te volgen stappen:

Stap 1: Identificeer de huidige MySQL-gegevensmap

Om te beginnen is het de moeite waard om de huidige gegevensmap te identificeren met behulp van de volgende opdracht. Ga er niet vanuit dat het nog steeds /var/lib/mysql is, aangezien het in het verleden gewijzigd kan zijn.

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

Nadat u het MySQL-wachtwoord hebt ingevoerd, zou de uitvoer er ongeveer zo uit moeten zien.

Stap 2: Kopieer MySQL-gegevensmap naar een nieuwe locatie

Om gegevenscorruptie te voorkomen, stopt u de service als deze momenteel actief is voordat u doorgaat. Gebruik hiervoor de bekende systemd commando's:

------------- 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, waarbij de oorspronkelijke machtigingen en tijdstempels behouden blijven:

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

Stap 3: Configureer een nieuwe MySQL-gegevensmap

Bewerk het configuratiebestand (mijn.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 secties [mysqld] en [client] 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 Data Directory

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 op.

------------- 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 dezelfde opdracht 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 met succes de gegevensdirectory voor MySQL of MariaDB gewijzigd.

Samenvatting

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

Heeft u vragen of opmerkingen over dit artikel? Laat het ons gerust weten via onderstaand formulier – we horen graag van u!