目录
版本说明
1 版本的选择
2 获取二进制程序包
3 使用MD5程序包进行校验
4 安装前准备工作
5 安装过程
5.1 创建MySQL用户和用户组
5.2 将二进制包进行解压
6 安装后的设置和测试
6.1 初始化数据目录
6.2 配置my.cnf
6.3 启动MySQL
6.4 初始化后修改root密码
参考资料
MySQL 5.7.27
CentOS 7.6
安装MySQL前,需要确定安装的版本及发行的程序包格式。
首先确定安装开发版还是GA(General Availability)版本,开发版拥有最新的特性,但是不建议在生产环境使用。GA版本也称为生产版或稳定版,适用于生产环境使用。MySQL建议使用最新的GA版本。
选择好需要安装的MySQL版本后,还需确定使用哪种发行格式进行安装。对于大多数情况,二进制发行版是最好的选择。
如有下列需求,可考虑使用源码包进行安装。
1.需要将MySQL安装在指定的位置,虽然标准的二进制包可以运行在任何安装位置,但你可以更灵活的通过源码包来安装MySQL的组件到指定位置。
2.需要使用未包含在二进制包中的功能来配置mysqld。
-DWITH_LIBWRAP=1 ,用于支持TCP封装器;
-DWITH_ZLIB={system|bundled} ,用于压缩功能;
-DWITH_DEBUG=1,用于调试支持。
有关其他信息,参考 第2.9.7节“MySQL Source-Configuration Options”.。
3.需要在配置mysqld时不使用标准二进制发行版中包含的一些特性。
4.需要读取或修改组成MySQL的C和c++代码。
5.源发行版包含比二进制发行版更多的测试和示例。
访问https://dev.mysql.com/downloads/mysql/,在页面中点击5.7 GA版本链接。
在下拉框中选择需要的版本,要记录程序包的MD5值,点击右侧的“Download”按钮。
这里会提示需要登录,不登录也可以完成下载,点击下方小字体的“No thanks,just start my download”,下载完成后上传至服务器。
在安装前使用MD5校验工具确认程序包完整性且未被修改。
# pwd
/usr/local
# md5sum mysql-5.7.27-linux-glibc2.12-x86_64.tar.gz
020b17fcbe79df8d59811f638d89df0e mysql-5.7.27-linux-glibc2.12-x86_64.tar.gz
安装布局会因不同的安装类型而不同,在管理不同的系统或使用不同的安装源时可能导致混淆。来自Oracle以外供应商的安装布局可能与文档中的布局不同。
警告:
如果原来在该操作系统上使用yum或apt安装过MySQL,那么在本机使用二进制文件安装有可能会遇到问题,要确保之前安装的MySQL已通过包管理系统完全卸载,并删除相关无用的数据文件,同时也要删除相关的配置文件及路径,如/etc/my.cnf、/etc/mysql。
MySQL依赖于libaio库,请使用yum进行安装。
yum install -y libaio
对于MySQL 5.7.19及更高版本:对非统一内存访问(NUMA)的支持已经添加到通用Linux构建中,现在它依赖于libnuma库,也需要进行安装。
yum install -y libnuma
从MySQL 5.7.19开始,Linux通用的包格式是EL6而不是EL5,MySQL客户端bin/mysql需要libtin.so.5。
解决方法是创建一个链接,例如64位系统上的ln -s libncurses.so.5.6 /lib64/libtinfo.so.5。
要安装二进制发行版压缩tar文件,请在选择的安装位置(通常是/usr/local/mysql)解压它。这将创建下表中所示的目录。
MySQL Installation Layout for Generic Unix/Linux Binary Package
mysqld二进制文件的调试版本为mysqld-debug。如需要要从源代码发行版中编译自己的MySQL调试版,请使用相应的配置选项来启用调试支持。请参考第2.9节“Installing MySQL from Source”。
# groupadd mysql
# useradd -r -g mysql -s /bin/false mysql
# tar xf mysql-5.7.27-linux-glibc2.12-x86_64.tar.gz
创建一个软链接,可以更方便的使用/usr/local/mysql这个路径。
# ln -s mysql-5.7.27-linux-glibc2.12-x86_64 mysql
为了避免在使用MySQL时总是需要输入客户机程序的绝对路径,可以将/usr/local/mysql/bin目录添加到path变量中。
# export PATH=$PATH:/usr/local/mysql/bin
二进制安装MySQL后,必须初始化数据目录,包括mysql系统数据库中的表。
# cd /usr/local/mysql
# mkdir mysql-files
# chown mysql:mysql mysql-files
# chmod 750 mysql-files
使用服务器初始化数据目录,包括包含了初始mysql授权表的mysql数据库,这些表决定如何允许用户连接到服务器。例如:
# cd /usr/local/mysql
# bin/mysqld --initialize --user=mysql --basedir=/usr/local/mysql --datadir=/usr/local/mysql/data --explicit_defaults_for_timestamp
2019-07-28T06:42:05.737833Z 0 [Warning] InnoDB: New log files created, LSN=45790
2019-07-28T06:42:05.810389Z 0 [Warning] InnoDB: Creating foreign key constraint system tables.
2019-07-28T06:42:05.819466Z 0 [Warning] No existing UUID has been found, so we assume that this is the first time that this server has been started. Generating a new UUID: d088e689-b102-11e9-89a8-0050563b046e.
2019-07-28T06:42:05.820752Z 0 [Warning] Gtid table is not ready to be used. Table 'mysql.gtid_executed' cannot be opened.
2019-07-28T06:42:05.822314Z 1 [Note] A temporary password is generated for root@localhost: ltgGD,LBu6x4
# cd /usr/local/mysql
# cat my.cnf
[mysqld]
#sql_mode=NO_ENGINE_SUBSTITUTION,STRICT_TRANS_TABLES
basedir=/usr/local/mysql
datadir=/usr/local/mysql/data
port=3306
pid-file = /usr/local/mysql/data/mysql.pid
user = mysql
socket= /usr/local/mysql/data/mysql.sock
bind-address = 0.0.0.0
server-id = 1
character-set-server = utf8
max_connections = 1000
max_connect_errors = 6000
open_files_limit = 65535
table_open_cache = 128
max_allowed_packet = 4M
binlog_cache_size = 1M
max_heap_table_size = 8M
tmp_table_size = 16M
read_buffer_size = 2M
read_rnd_buffer_size = 8M
sort_buffer_size = 8M
join_buffer_size = 8M
key_buffer_size = 4M
thread_cache_size = 8
query_cache_type = 1
query_cache_size = 8M
query_cache_limit = 2M
ft_min_word_len = 4
log_bin = mysql-bin
binlog_format = mixed
expire_logs_days = 30
log_error = /usr/local/mysql/data/mysql-error.log
slow_query_log = 1
long_query_time = 1
slow_query_log_file = /usr/local/mysql/data/mysql-slow.log
performance_schema = 0
explicit_defaults_for_timestamp
#lower_case_table_names = 1
skip-external-locking
default_storage_engine = InnoDB
#default-storage-engine = MyISAM
innodb_file_per_table = 1
innodb_open_files = 500
innodb_buffer_pool_size = 64M
innodb_write_io_threads = 4
innodb_read_io_threads = 4
innodb_thread_concurrency = 0
innodb_purge_threads = 1
innodb_flush_log_at_trx_commit = 2
innodb_log_buffer_size = 2M
innodb_log_file_size = 32M
innodb_log_files_in_group = 3
innodb_max_dirty_pages_pct = 90
innodb_lock_wait_timeout = 120
bulk_insert_buffer_size = 8M
myisam_sort_buffer_size = 8M
myisam_max_sort_file_size = 10G
myisam_repair_threads = 1
interactive_timeout = 28800
wait_timeout = 28800
#lower_case_table_names = 1
skip-external-locking
default_storage_engine = InnoDB
#default-storage-engine = MyISAM
innodb_file_per_table = 1
innodb_open_files = 500
innodb_buffer_pool_size = 64M
innodb_write_io_threads = 4
innodb_read_io_threads = 4
innodb_thread_concurrency = 0
innodb_purge_threads = 1
innodb_flush_log_at_trx_commit = 2
innodb_log_buffer_size = 2M
innodb_log_file_size = 32M
innodb_log_files_in_group = 3
innodb_max_dirty_pages_pct = 90
innodb_lock_wait_timeout = 120
bulk_insert_buffer_size = 8M
myisam_sort_buffer_size = 8M
myisam_max_sort_file_size = 10G
myisam_repair_threads = 1
interactive_timeout = 28800
wait_timeout = 28800
[client]
port=3306
socket = /usr/local/mysql/data/mysql.sock
[mysql]
socket = /usr/local/mysql/data/mysql.sock
# service mysqld start
Starting MySQL..Logging to '/usr/local/mysql/data/mysql-error.log'.
. SUCCESS!
# mysql -u root -p
Enter password: --输入初始化打印信息中的口令ltgGD,LBu6x4
Welcome to the MySQL monitor. Commands end with ; or \g.
Your MySQL connection id is 2
Server version: 5.7.27-log
Copyright (c) 2000, 2019, Oracle and/or its affiliates. All rights reserved.
Oracle is a registered trademark of Oracle Corporation and/or its
affiliates. Other names may be trademarks of their respective
owners.
Type 'help;' or '\h' for help. Type '\c' to clear the current input statement.
mysql>
执行一条查看database的命令进行验证。
mysql> show databases;
ERROR 1820 (HY000): You must reset your password using ALTER USER statement before executing this statement.
--提示需要重置密码
mysql> set PASSWORD=PASSWORD('root');
Query OK, 0 rows affected, 1 warning (0.00 sec)
mysql> show databases;
+--------------------+
| Database |
+--------------------+
| information_schema |
| mysql |
| performance_schema |
| sys |
+--------------------+
4 rows in set (0.00 sec)
mysql> quit
Bye
# service mysqld stop
Shutting down MySQL.. SUCCESS!
至此,已完成二进制安装MySQL 5.7。
https://dev.mysql.com/doc/refman/5.7/en/installing.html
Tank
2019.7.28