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

VMware virtual machine to establish HTTP service steps analysis

1. Use xshell to connect to the virtual machine, ...

How to use shell scripts in node

background During development, we may need some s...

The principle and application of ES6 deconstruction assignment

Table of contents Array destructuring assignment ...

Solution to forgetting the password of the pagoda panel in Linux 3.X/4.x/5.x

Enter ssh and enter the following command to rese...

Ubuntu 16.04 64-bit compatible with 32-bit programs in three steps

Step 1: Confirm the architecture of your system d...

vue_drf implements SMS verification code

Table of contents 1. Demand 1. Demand 2. SDK para...

A brief discussion on HTML table tags

Mainly discuss its structure and some important pr...

MySQL horizontal and vertical table conversion operation implementation method

This article uses examples to illustrate how to i...

Example of implementing login effect with vue ElementUI's from form

Table of contents 1. Build basic styles through E...

Vue Router loads different components according to background data

Table of contents Requirements encountered in act...

Shell script nginx automation script

This script can satisfy the operations of startin...

WeChat applet picker multi-column selector (mode = multiSelector)

Table of contents 1. Effect diagram (multiple col...

HTML form tag tutorial (3): input tag

HTML form tag tutorial, this section mainly expla...