CentOS7安装MySQL
2019/02/15
Linux
MySQL
# 1 下载: - MySQL8.0下载地址:[https://dev.mysql.com/downloads/mysql/8.0.html](https://dev.mysql.com/downloads/mysql/8.0.html) - MySQL5.7下载地址:[https://dev.mysql.com/downloads/mysql/5.7.html](https://dev.mysql.com/downloads/mysql/5.7.html) - MySQL旧版本下载地址:[https://downloads.mysql.com/archives/community/](https://downloads.mysql.com/archives/community/) PS:下文以`MySQL8.0.30`为例,并使用`root`用户 1. 在`Select Operating System`(选择操作系统)选择`Linux - Generic`(Linux系统-通用版) 2. 在`Select OS Version`(选择系统版本)选择`Linux - Generic (glibc 2.12) (x86, 64-bit)`(64位系统) > 当使用`MySQL8`时:可以在服务器上通过`ldd --version`命令查询`glibc`版本,若服务器为`2.17`,则可以选择`Linux - Generic (glibc 2.17) (x86, 64-bit)`版本,此版本为`Minimal`版本,去除了`调试二进制文件`和`普通二进制文件`,安装包文件会很小。(本文以`glibc 2.12`版为例) 3. 点击**Compressed TAR Archive**后面的`download`按钮<br> 4. 不需要登录,直接点击`No thanks, just start my download`下载安装包<br> 5. 下载完成后,使用ftp工具上传工具将安装包上传到`/root`目录下;也可以使用右击复制下载地址,使用Linux的`wget`命令直接下载到Linux系统中 # 2 检查系统 ## 2.1 检查是否存在mariadb数据库(该数据库会与MySQL冲突) 查看是否安装了mariadb ```bash rpm -qa | grep mariadb ``` 如果显示了以下信息就代表有 ``` mariadb-libs-XXXXX ``` 先停止服务,**一般情况下服务是没启动的状态**,出现服务停止失败的提示是正常的 ```bash systemctl stop mariadb ``` 然后执行以下命令卸载 ```bash rpm -e --nodeps mariadb-libs ``` > 注:如果显示的信息里还包含其他的mariadb相关包,也需要卸载 ## 2.2 安装依赖 ```bash yum -y install libaio numactl ``` # 3 解压、移动并重命名 ```bash tar -xf mysql-8.0.30-linux-glibc2.12-x86_64.tar.xz rm -rf mysql-8.0.30-linux-glibc2.12-x86_64.tar.xz mv mysql-8.0.30-linux-glibc2.12-x86_64/ /usr/local/mysql ``` > 注:建议移动到`/usr/local`文件夹下,并重命名为`mysql` # 4 新建日志文件夹 在`mysql`目录下新建一个`log`文件夹,用于存储日志文件 ```bash mkdir /usr/local/mysql/log ``` # 5 新建my.cnf配置文件 > 注:MySQL启动时会去以下路径查找配置文件,如果未找到配置文件,则全部以默认配置启动 /etc/my.cnf /etc/mysql/my.cnf /usr/local/mysql/etc/my.cnf /usr/local/mysql/my.cnf ~/.my.cnf 在`/usr/local/mysql/`路径下,新建一个配置文件 ```bash vim /usr/local/mysql/my.cnf ``` 粘贴以下内容后保存 ```ini [mysql] # 客户端默认字符集 default-character-set=utf8mb4 [mysqld] # 服务器唯一ID(主从复制时需要不一样) server-id=1 # 是否只读,OFF(默认)表示读写(主机),ON表示只读(从机) read-only=OFF # 安装目录 basedir=/usr/local/mysql # 数据库的数据的存放目录 datadir=/usr/local/mysql/data # 绑定ipv4地址 bind-address=0.0.0.0 # 端口号 port=3306 # 服务端使用的字符集 character-set-server=utf8mb4 # 数据库排序字符集 collation_server=utf8mb4_general_ci # 创建新表时将使用的默认存储引擎 default-storage-engine=INNODB # 最大承受包:默认4M max_allowed_packet=100M # 分组拼接最大长度:默认1024,64位最大18446744073709551615,32位最大4294967295 group_concat_max_len=18446744073709551615 # 当设置为0,该模式速度最快,但不太安全: # mysqld进程的崩溃会导致上一秒钟所有事务数据的丢失。 # 当设置为1,该模式是最安全的,但也是最慢的一种方式,也是默认模式: # 在mysqld 服务崩溃或者服务器主机crash的情况下,binary log 只有可能丢失最多一个语句或者一个事务。 # 当设置为2,该模式速度较快,也比0安全 # 只有在操作系统崩溃或者系统断电的情况下,上一秒钟所有事务数据才可能丢失。 innodb_flush_log_at_trx_commit=2 # 默认64,最大1000。当tablespace 空间已经满了后,需要MySQL系统需要自动扩展多少空间,每次tablespace 扩展都会让各个SQL 处于等待状态。增加自动扩展Size可以减少tablespace自动扩展次数。 innodb_autoextend_increment=64 # 默认16M(16777216)。InnoDB用来缓冲日志数据的缓冲区大小。因为它是每秒刷新一次的,所以将它设置得很大是没有意义的(即使是长事务)。 innodb_log_buffer_size=1M # 默认48M(50331648)。此配置项作用设定innodb 数据库引擎写日志缓存区。 innodb_log_file_size=48M # 默认128M(134217728)。InnoDB使用缓冲池来缓存索引和行数据。 innodb_buffer_pool_size=8M # innodb使用的CPU线程数,默认4(推荐与CPU核心数相同) innodb_read_io_threads=4 innodb_write_io_threads=4 # 允许最大同时连接数:默认151 max_connections=151 # 服务器关闭非交互连接之前等待活动的秒数(默认28800,即8小时) wait_timeout=3600 # 服务器关闭非交互连接之前等待活动的秒数(默认28800,即8小时) interactive_timeout=3600 # 关闭MySQLx(MySQL5.7不支持此选项,使用时需要注释此配置) mysqlx=0 ### 日志相关 ## 慢查询日志 # 开启慢查询日志(建议本地和测试环境开启) slow_query_log=ON # 慢查询日志文件位置 slow_query_log_file=/usr/local/mysql/log/log-slow.log # 慢查询时间阈值(单位:秒) long_query_time=3 ## 通用查询日志 # 开启通用查询日志(默认关闭,不建议开启) general_log=OFF # 通用查询日志位置(默认 datadir 目录下) #general_log_file=/usr/local/mysql/log/log-general.log ## 错误日志 # 错误日志存放文件(默认 datadir 目录下) log_error=/usr/local/mysql/log/log_error.log ## 二进制日志 # 二进制日志文件位置(默认 datadir 目录下,不建议和数据文件放在同一目录或磁盘) log_bin=/usr/local/mysql/log/log-bin # 文件格式 binlog_format=MIXED # 单文件最大大小(默认1GB) max_binlog_size=1GB # 文件过期时间(默认30天) binlog_expire_logs_seconds=2592000 # 如果需要关闭二进制日志,打开如下配置(并删除 log_bin 配置) #skip-log-bin ## 中继日志(主从复制时,从机需要配置) # 中继日志文件位置(默认 datadir 目录下,不建议和数据文件放在同一目录或磁盘) #relay_log=/usr/local/mysql/log/log-relay ``` # 6 设置环境变量 编辑环境变量配置文件 ```bash vim /etc/profile ``` 在文档最后添加如下内容 ``` export MYSQL_HOME=/usr/local/mysql export PATH=$PATH:$MYSQL_HOME/bin ``` 插入后保存文件 使环境变量生效 ```bash source /etc/profile ``` # 7 新建mysql用户、mysql用户组,修改文件夹所属用户 新建mysql用户(同时会自动创建同名的mysql用户组) ```bash useradd -r mysql ``` 将`/usr/local/mysql`的所有者及所属组改为mysql ```bash chown -R mysql:mysql /usr/local/mysql/ ``` # 8 初始化MySQL数据库 输入以下命令初始化MySQL默认数据库,用户名为root,密码为空 ```bash mysqld --initialize-insecure --user=mysql ``` # 9 添加服务 编辑服务配置文件 ```bash vim /usr/lib/systemd/system/mysql.service ``` 添加如下内容 ``` [Unit] Description=MySQL Server Documentation=man:mysqld(8) Documentation=http://dev.mysql.com/doc/refman/en/using-systemd.html After=network.target After=syslog.target [Install] WantedBy=multi-user.target [Service] User=mysql Group=mysql ExecStart=/usr/local/mysql/bin/mysqld --defaults-file=/usr/local/mysql/my.cnf ``` 刷新系统服务、设置开机自启、启动服务、查看服务状态 ```bash systemctl daemon-reload systemctl enable mysql.service systemctl start mysql.service systemctl status mysql.service ``` # 10 登录,修改默认密码 输入以下命令登录MySQL ```bash mysql -u root -p ``` 此时出现`Enter password`提示,默认没有密码,再次回车即可登录,输入以下命令修改密码(123即密码,可自定义) ``` ALTER USER 'root'@'localhost' IDENTIFIED BY "123"; ``` 推荐:输入以下命令使root用户可以远程访问 ```bash use mysql; update user set host = '%' where user = 'root'; ``` 输入以下命令刷新权限 ```bash flush privileges; ``` # 11 开放防火墙3306端口 ```bash firewall-cmd --zone=public --add-port=3306/tcp --permanent ``` 使防火墙立即生效 ```bash firewall-cmd --reload ``` ***完成,收工***
14