Skip to content

Commit efd68af

Browse files
committed
feat: add MySQL configuration creation and initialization in Zabbix script
1 parent cb0f138 commit efd68af

File tree

1 file changed

+86
-3
lines changed

1 file changed

+86
-3
lines changed

setup/system/zabbix.sh

Lines changed: 86 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -147,11 +147,57 @@ install_zabbix_server() {
147147
print_info "Installing MySQL server..."
148148
DEBIAN_FRONTEND=noninteractive apt-get install -y mysql-server
149149

150-
# Verify installation
150+
# Create default MySQL config if missing
151+
if [ ! -f /etc/mysql/my.cnf ]; then
152+
print_info "Creating MySQL default configuration..."
153+
mkdir -p /etc/mysql/conf.d /etc/mysql/mysql.conf.d
154+
tee /etc/mysql/my.cnf > /dev/null <<'EOFMYSQL'
155+
# MySQL default configuration
156+
[client]
157+
port = 3306
158+
socket = /var/run/mysqld/mysqld.sock
159+
160+
[mysqld]
161+
port = 3306
162+
socket = /var/run/mysqld/mysqld.sock
163+
pid-file = /var/run/mysqld/mysqld.pid
164+
datadir = /var/lib/mysql
165+
bind-address = 127.0.0.1
166+
log-error = /var/log/mysql/error.log
167+
168+
!includedir /etc/mysql/conf.d/
169+
!includedir /etc/mysql/mysql.conf.d/
170+
EOFMYSQL
171+
print_success "MySQL configuration created"
172+
fi
173+
174+
# Initialize MySQL data directory if needed
175+
if [ ! -d /var/lib/mysql/mysql ]; then
176+
print_info "Initializing MySQL data directory..."
177+
mkdir -p /var/lib/mysql
178+
chown -R mysql:mysql /var/lib/mysql
179+
mysqld --initialize-insecure --user=mysql 2>/dev/null || true
180+
fi
181+
182+
# Create log directory
183+
mkdir -p /var/log/mysql
184+
chown -R mysql:adm /var/log/mysql
185+
186+
# Verify installation and start
151187
if dpkg -l | grep -q "^ii.*mysql-server"; then
188+
print_info "Starting MySQL..."
152189
systemctl start mysql
153190
systemctl enable mysql
154-
print_success "MySQL installed and started"
191+
192+
# Wait for MySQL to start
193+
sleep 3
194+
195+
if systemctl is-active --quiet mysql; then
196+
print_success "MySQL installed and started"
197+
else
198+
print_error "MySQL failed to start, checking logs..."
199+
journalctl -u mysql -n 20 --no-pager
200+
fi
155201
else
156202
print_error "MySQL installation failed, trying to fix..."
157203
apt-get install -f -y
@@ -171,7 +217,44 @@ install_zabbix_server() {
171217
else
172218
# Install MySQL - no existing database
173219
print_info "Installing MySQL server..."
174-
apt-get install -y mysql-server
220+
DEBIAN_FRONTEND=noninteractive apt-get install -y mysql-server
221+
222+
# Create default MySQL config if missing
223+
if [ ! -f /etc/mysql/my.cnf ]; then
224+
print_info "Creating MySQL default configuration..."
225+
mkdir -p /etc/mysql/conf.d /etc/mysql/mysql.conf.d
226+
tee /etc/mysql/my.cnf > /dev/null <<'EOFMYSQL'
227+
# MySQL default configuration
228+
[client]
229+
port = 3306
230+
socket = /var/run/mysqld/mysqld.sock
231+
232+
[mysqld]
233+
port = 3306
234+
socket = /var/run/mysqld/mysqld.sock
235+
pid-file = /var/run/mysqld/mysqld.pid
236+
datadir = /var/lib/mysql
237+
bind-address = 127.0.0.1
238+
log-error = /var/log/mysql/error.log
239+
240+
!includedir /etc/mysql/conf.d/
241+
!includedir /etc/mysql/mysql.conf.d/
242+
EOFMYSQL
243+
print_success "MySQL configuration created"
244+
fi
245+
246+
# Initialize MySQL data directory if needed
247+
if [ ! -d /var/lib/mysql/mysql ]; then
248+
print_info "Initializing MySQL data directory..."
249+
mkdir -p /var/lib/mysql
250+
chown -R mysql:mysql /var/lib/mysql
251+
mysqld --initialize-insecure --user=mysql 2>/dev/null || true
252+
fi
253+
254+
# Create log directory
255+
mkdir -p /var/log/mysql
256+
chown -R mysql:adm /var/log/mysql
257+
175258
systemctl start mysql
176259
systemctl enable mysql
177260
print_success "MySQL installed and started"

0 commit comments

Comments
 (0)