Communities

Writing
Writing
Codidact Meta
Codidact Meta
The Great Outdoors
The Great Outdoors
Photography & Video
Photography & Video
Scientific Speculation
Scientific Speculation
Cooking
Cooking
Electrical Engineering
Electrical Engineering
Judaism
Judaism
Languages & Linguistics
Languages & Linguistics
Software Development
Software Development
Mathematics
Mathematics
Christianity
Christianity
Code Golf
Code Golf
Music
Music
Physics
Physics
Linux Systems
Linux Systems
Power Users
Power Users
Tabletop RPGs
Tabletop RPGs
Community Proposals
Community Proposals
tag:snake search within a tag
answers:0 unanswered questions
user:xxxx search by author id
score:0.5 posts with 0.5+ score
"snake oil" exact phrase
votes:4 posts with 4+ votes
created:<1w created < 1 week ago
post_type:xxxx type of post
Search help
Notifications
Mark all as read See all your notifications »
Q&A

Post History

60%
+1 −0
Q&A How to start MariaDB (or MySQL) server on a WSL using systemctl?

systemctl is a tool for controlling systemd, the "new" Linux init system (actually it's been widely used for 10 years now). Systemd is the first process that runs at boot, which then brings up all ...

posted 1y ago by matthewsnyder‭

Answer
#1: Initial revision by user avatar matthewsnyder‭ · 2023-07-11T20:33:21Z (over 1 year ago)
`systemctl` is a tool for controlling [systemd](https://en.wikipedia.org/wiki/Systemd), the "new" Linux init system (actually it's been widely used for 10 years now). Systemd is the first process that runs at boot, which then brings up all the rest of the OS. It also handles various background processes like system services.

WSL does not boot the way a normal Linux would, so it does not have a working systemd. That's why `systemctl` will not work.

Since you are on Windows, it is possible to instead set up the MariaDB on Windows directly, using Windows services. A basic set up normally results in MariaDB listening on localhost, and you should then be able to connect to it from inside WSL. Of course, Windows's CLI is quite different from Linux/Unix.

I would recommend running a [Dockerized instance](https://hub.docker.com/_/mariadb) of it. You'll have to install Docker first, but that's well documented and MariaDB (and any other container) will be easy afterwards. With containers:

* It's all set up for you already and you don't have to deal with configuring
* If you do want to create your own DIY container, the Dockerfile makes it much easier to develop & troubleshoot because it's deterministic and reproducible
* Systemd doesn't run normally in Docker either, but it's much better documented how to deal with issues like this (plus the official MariaDB image for example has already taken care of that for you, so you don't even need to care)
* If you decide to deploy your app to a real server later, you can use the same Docker image as is instead of having to set up and configure the DB again