Mysql5.6.36 script compilation, installation and initialization tutorial

Mysql5.6.36 script compilation, installation and initialization tutorial

Overview

This article is a script for automatically compiling and installing mysql5.3.6 on centos7.3 and subsequent initialization operations. Without further ado, let's get straight to the script.

The installation script install.py is as follows:

#coding=utf-8
#!/usr/bin/python
import os,commands
#Define variable install_dir = '/data/mysql'
data_dir = '/data/mysql/data'
package_dir = '/data/mysql'
log_dir = '/data/mysql/logs'
current_dir = os.getcwd()
cmake = 'cmake -DCMAKE_INSTALL_PREFIX=%s -DMYSQL_UNIX_ADDR=%s/mysql.sock -DDEFAULT_CHARSET=utf8 -DDEFAULT_COLLATION=utf8_general_ci -DMYSQL_DATADIR=%s -DMYSQL_TCP_PORT=3306' % (install_dir, install_dir, data_dir)

#Install dependent packages os.system('yum install gcc gcc-c++ gcc-g77 autoconf automake zlib* fiex* libxml* ncurses-devel libmcrypt* libtool-ltdl-devel* make cmake perl -y')
#Installation function def install_mysql():
 if os.system('groupadd mysql') == 0:
  print 'group mysql add success!'
 else:
  exit('group mysql add failed!')
 if os.system('useradd -r -g mysql -s /bin/false mysql') == 0:
  print 'user mysql add success!'
 else:
  exit('user mysql add failed!')

 if not os.path.exists(install_dir):
  os.system('mkdir -p %s' % install_dir)
 if not os.path.exists(data_dir):
  os.system('mkdir -p %s' % data_dir)
 if not os.path.exists(package_dir):
  os.system('mkdir -p %s' % package_dir)
 if not os.path.exists(log_dir):
  os.system('mkdir -p %s' % log_dir)

 if os.system('tar zxvf mysql-5.6.36.tar.gz') == 0:
  print 'uncompress v success!'
 else:
  exit('uncompress mysql-5.6.36.tar.gz failed!')
 os.chdir('mysql-5.6.36')
 if os.system(cmake) == 0:
  print 'Compilation successful'
 else:
  exit('Compile mysql failed')
 if os.system('make && make install') == 0:
  print 'Compile and install mysql successfully'
 else:
  exit('Compile and install mysql failed')

 if os.system('chown -R mysql:mysql %s' % install_dir) == 0:
  print 'Installation directory permissions configured successfully'
 else:
  exit()
 os.system('chown -R mysql:mysql %s' % data_dir)
 os.system('cd %s && touch mysql-error.log' % log_dir)
 os.system('chown -R mysql:mysql %s' % log_dir)
 os.chdir(install_dir)

 if os.system('./scripts/mysql_install_db --user=mysql --datadir=%s' % data_dir) == 0:
  print 'mysql initialization successful'
 else:
  exit('mysql initialization failed')
  
 os.system('cp support-files/mysql.server /etc/init.d/mysqld')
 os.system('mv /etc/my.cnf /etc/my.cnf.bak')
 os.chdir(current_dir)
 os.system('cp my.cnf /etc/my.cnf')
 os.system('service mysqld start')
 os.system('chkconfig mysqld on')

install_mysql()

if os.path.exists('/etc/profile'):
 os.system('cp /etc/profile /etc/profile.bak')
if os.system('echo "PATH=%s/bin:%s/lib:$PATH" >> /etc/profile' % (install_dir, install_dir)) == 0:
 print 'Modify /etc/profile successfully'
else:
 exit()
if os.system('echo "export PATH" >> /etc/profile') == 0:
 print 'The /etc/profile file has been modified successfully'
else:
 exit()

Configuration file my.cnf

[mysqld]
basedir = /data/mysql
datadir = /data/mysql/data
tmpdir = /data/mysql
socket = /data/mysql/mysql.sock
skip-external-locking
skip-name-resolve
lower_case_table_names=1
auto_increment_offset = 1 
auto_increment_increment = 2 
#server-id
########## binlog ##########
log_bin = /data/mysql/logs/mysql-bin
binlog_format = row
binlog_cache_size = 2M
expire-logs-days = 7

########## error log ##########
log_error = /data/mysql/logs/mysql-error.log

########## slow log ##########
slow_query_log = 1
slow_query_log_file = /data/mysql/logs/mysql-slow.log
long_query_time = 5

########## per_thread_buffers ##########
max_connections = 1024
max_connect_errors = 1000
key_buffer_size = 64M
max_allowed_packet = 128M
table_open_cache = 6144
table_definition_cache = 4096
sort_buffer_size = 512K
read_buffer_size = 512K
join_buffer_size = 512K
tmp_table_size = 64M
max_heap_table_size = 64M
thread_cache_size = 64
thread_concurrency = 32
bulk_insert_buffer_size = 64M

########innodb########
innodb_buffer_pool_size = 45G
innodb_log_file_size = 500M
innodb_log_buffer_size = 64M
innodb_flush_log_at_trx_commit = 2
innodb_file_per_table = 1
innodb_file_io_threads = 4
innodb_flush_method = O_DIRECT
innodb_thread_concurrency = 0
innodb_additional_mem_pool_size = 16M

[mysqlhotcopy]
interactive-timeout
[mysqld_safe]
open_files_limit = 65535

Directions:

1. The operating system needs to configure the yum source
2. Operating system version: centos7.3
3. Put install.py my.cnf and mysql installation package in a folder

MySQL installation package download address: Link: https://pan.baidu.com/s/1pKHbFlh Password: tx9b

initialization

Since the compiled and installed mysql5.6.36 has no password by default, enter mysql directly in the command line to log in and execute the following sql statement

-- Initialize data use mysql;
update user set password=PASSWORD("Abcd123") where user='root';
grant all privileges on *.* to weihu@"%" identified by "Abcd123";
delete from mysql.user where user = '';
FLUSH PRIVILEGES;
-- Create a demo database CREATE DATABASE `demo` DEFAULT CHARACTER SET utf8 COLLATE utf8_general_ci;
show databases;

The above is the full content of this article. I hope it will be helpful for everyone’s study. I also hope that everyone will support 123WORDPRESS.COM.

You may also be interested in:
  • MySQL 5.6.36 Windows x64 version installation tutorial detailed
  • MySql 5.6.36 64-bit green version installation graphic tutorial

<<:  You Probably Don’t Need to Use Switch Statements in JavaScript

>>:  Detailed explanation of Frp forced redirection to https configuration under Nginx

Recommend

VUE+Express+MongoDB front-end and back-end separation to realize a note wall

I plan to realize a series of sticky note walls. ...

mysql having usage analysis

Usage of having The having clause allows us to fi...

Detailed explanation of mysql partition function and example analysis

First, what is database partitioning? I wrote an ...

MySQL 5.7.18 download and installation process detailed instructions

MySql Download 1. Open the official website and f...

Implementation steps for setting up the React+Ant Design development environment

Basics 1. Use scaffolding to create a project and...

A brief talk about cloning JavaScript

Table of contents 1. Shallow cloning 2. Deep clon...

Implementation methods of common CSS3 animations

1. What is CSS Animations is a proposed module fo...

Some conclusions on developing mobile websites

The mobile version of the website should at least...

Two ways to enable firewall in Linux service

There are two ways: 1. Service method Check the f...

Web Design Tutorial (4): About Materials and Expressions

<br />Previous Web Design Tutorial: Web Desi...

About deploying a web project to Alibaba Cloud Server (5 steps to do it)

1. First log in to the Alibaba Cloud website to r...

Summary of important mysql log files

Author: Ding Yi Source: https://chengxuzhixin.com...