Home >Database >Mysql Tutorial >How to compile and install MySQL 8.0 on CentOS7
CentOSThere are many tutorials on compiling and installing MySQL on the Internet, and they are basically the same. However, sometimes the installation of software may fail due to a detail.
0. Preliminary preparation conditions
•Check the linux version
[root@mysql etc]# cat /etc/RedHat-releaseCentOS Linux release 7.3.1611 (Core) •Could NOT find Curses yum install ncurses-devel •Bison executable not found in PATH yum install bison
Note: Basic packages will be missing during the installation process. The instance environment lacks the above packages, please install the corresponding packages in advance
1. Source compilation and installation of cmake
[root@db software]# nohup tar zxvf cmake-3.11.1.tar.gz &[root@db software]# cd cmake-3.11.1[root@db cmake-3.11.1]# ./configure[root@localhost cmake-3.0.1]# gmake && make install
2. Deployment and installation of wolfssl package [optional]
*. 从wolfssl.com网站下载wolfssl-3.13.0.zip压缩包 *. 解压至/data/software/mysql-8.0.11/extra/wolfssl-3.13.0目录中。 *. cd extra/wolfssl-3.13.0/IDE/MYSQL *. 执行do.sh脚本 *. use -DWITH_SSL=wolfssl for CMake
3.openssl and openssl-devel[This experiment uses system ssl]
yum install –y openssl openssl-devel
4.Compilation and installation of mysql
[root@mysql software]#tar zxvf mysql-8.0.11.tar.gz[root@mysql software]# cd mysql-8.0.11/[root@mysql software]# mkdir Zdebug[root@mysql software]# cd Zdebugcmake .. -DCMAKE_INSTALL_PREFIX=/usr/local/mysql \ -DDEFAULT_CHARSET=utf8 \ -DDEFAULT_COLLATION=utf8_general_ci \ -DENABLED_LOCAL_INFILE=ON \ -DWITH_INNODB_MEMCACHED=ON \ -DWITH_SSL=system \ -DWITH_INNOBASE_STORAGE_ENGINE=1 \ -DWITH_FEDERATED_STORAGE_ENGINE=1 \ -DWITH_BLACKHOLE_STORAGE_ENGINE=1 \ -DWITH_ARCHIVE_STORAGE_ENGINE=1 \ -DWITHOUT_EXAMPLE_STORAGE_ENGINE=1 \ -DWITH_PERFSCHEMA_STORAGE_ENGINE=1 \ -DCOMPILATION_COMMENT="zsd edition" \ -DDOWNLOAD_BOOST=1 \ -DWITH_BOOST=/tmp \ -DMYSQL_UNIX_ADDR=/data/mysqldata/3306/mysql.sock \ -DSYSCONFDIR=/data/mysqldata/3306 > /data/software/mysql-8.0.11/Zdebug/mysql_cmake80.log 2>&1
The following log appears:
............ -- Configuring done-- Generating done-- Build files have been written to: /data/software/mysql-8.0.11/Zdebug ............
It means the compilation is successful, among which -DWITH_SSL=system uses openssl of the Linux operating system, and openssl and openssl-devel packages need to be installed before it can be compiled
If you need to compile and install quickly, you can use multi-threading to speed up the compilation and installation. The command is as follows:
make -j 12 make install
•MySQL 8.0 software directory structure
[root@mysql Zdebug]# cd /usr/local/mysql/[root@mysql mysql]# ls -ltotal 612 drwxr-xr-x. 2 root root 4096 May 16 14:20 bin drwxr-xr-x. 2 root root 55 May 16 14:20 docs drwxr-xr-x. 3 root root 266 May 16 14:20 include drwxr-xr-x. 4 root root 173 May 16 14:20 lib -rw-r--r--. 1 root root 301518 Apr 8 14:44 LICENSE -rw-r--r--. 1 root root 301518 Apr 8 14:44 LICENSE-test drwxr-xr-x. 4 root root 30 May 16 14:20 man drwxr-xr-x. 10 root root 4096 May 16 14:21 mysql-test -rw-r--r--. 1 root root 687 Apr 8 14:44 README -rw-r--r--. 1 root root 687 Apr 8 14:44 README-test drwxr-xr-x. 28 root root 4096 May 16 14:21 share drwxr-xr-x. 2 root root 90 May 16 14:21 support-files
5. Create mysql user& and modify related File
[root@mysql mysql]# groupadd mysql[root@mysql mysql]# useradd -g mysql mysql
6. Set the limit of user operating system resources
[root@localhost cmake-3.0.1]# vi /etc/security/limits.confmysql soft nproc 65536 mysql hard nproc 65536 mysql soft nofile 65536 mysql hard nofile 65536
Verify whether limit is effective
[root@mysql ~]# su - mysql[mysql@mysql ~]$ ulimit -a
The log is as follows:
open files (-n) 65536 max user processes (-u) 65536 ............
7.Create MySQL data Directory and grant corresponding permissions
#cd /data/#mkdir -p /data/mysqldata/{3306/{data,tmp,binlog,innodb_ts,innodb_log},backup,scripts}#chown -R mysql:mysql mysqldata#su - mysql
8. Configure the my.cnf file
$vi /data/mysqldata/3306/my.cnf [client] port = 3306 socket = /data/mysqldata/3306/mysql.sock# The MySQL server[mysqld] port = 3306 user = mysql socket = /data/mysqldata/3306/mysql.sock pid-file = /data/mysqldata/3306/mysql.pid basedir = /usr/local/mysql datadir = /data/mysqldata/3306/data tmpdir = /data/mysqldata/3306/tmp open_files_limit = 60000 explicit_defaults_for_timestamp server-id = 1203306 lower_case_table_names = 1 character-set-server = utf8 federated#sql_mode=STRICT_TRANS_TABLESmax_connections = 1000 max_connect_errors = 100000 interactive_timeout = 86400 wait_timeout = 86400 sync_binlog=0 back_log=100 default-storage-engine = InnoDB log_slave_updates = 1#*********** Logs related settings ***********log-bin = /data/mysqldata/3306/binlog/mysql-bin binlog_format= mixed binlog_cache_size=32m max_binlog_cache_size=64m max_binlog_size=512m long_query_time = 1 log_output = FILElog-error = /data/mysqldata/3306/mysql-error.log slow_query_log = 1 slow_query_log_file = /data/mysqldata/3306/slow_statement.log#log_queries_not_using_indexesgeneral_log = 0 general_log_file = /data/mysqldata/3306/general_statement.log#expire-logs-days = 14binlog_expire_logs_seconds = 1728000 relay-log = /data/mysqldata/3306/binlog/relay-bin relay-log-index = /data/mysqldata/3306/binlog/relay-bin.index#****** MySQL Replication New Feature*********master-info-repository=TABLE relay-log-info-repository=TABLE relay-log-recovery#*********** INNODB Specific options ***********innodb_buffer_pool_size = 2048M transaction-isolation=REPEATABLE-READ innodb_buffer_pool_instances = 8 innodb_file_per_table = 1 innodb_data_home_dir = /data/mysqldata/3306/innodb_ts innodb_data_file_path = ibdata1:2048M:autoextend innodb_thread_concurrency = 8 innodb_log_buffer_size = 16M innodb_log_file_size = 128M innodb_log_files_in_group = 3 innodb_log_group_home_dir = /data/mysqldata/3306/innodb_log innodb_flush_log_at_trx_commit = 2 innodb_max_dirty_pages_pct = 70 innodb_flush_method=O_DIRECT [mysql] no-auto-rehash default-character-set=gbk prompt = (\u@\h) [\d]>\_
9. Initialize the MySQL database
$/usr/local/mysql/bin/mysqld --defaults-file=/data/mysqldata/3306/my.cnf --initialize --user=mysql
10. Start the mysql service
$/usr/local/mysql/bin/mysqld_safe --defaults-file=/data/mysqldata/3306/my.cnf --user=mysql &
11. Log in to the database
Note: The password comes from the error log, the details are as follows:
2018-05-16T07:17:57.335486Z 5 [Note] [MY-010454] [Server] A temporary password is generated for root@localhost: jlocal/mysql/bin/mysql -uroot -p'j
12. Some basic permission configurations of the database
Modify the root account password:
ALTER USER 'root'@'localhost' IDENTIFIED WITH sha256_password BY 'zsd@7101' PASSWORD EXPIRE INTERVAL 360 DAY;
View current user account
(root@localhost) [(none)]> select user,host from mysql.user; +------------------+-----------+ | user | host | +------------------+-----------+ | mysql.infoschema | localhost | | mysql.session | localhost | | mysql.sys | localhost | | root | localhost | +------------------+-----------+
The above is the detailed content of How to compile and install MySQL 8.0 on CentOS7. For more information, please follow other related articles on the PHP Chinese website!