@@ -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