CentOS 7 下安装 MySQL 5.7 or 8

本文档详细介绍了如何在CentOS 7环境下安装MySQL 5.7或8.0。首先,需要进行环境准备,包括安装必要的依赖包。接着,通过下载MySQL Yum仓库选择合适的MySQL版本。安装过程包括启用或禁用不同版本的MySQL,然后执行安装命令。在安装完成后,启动MySQL Server并设置开机启动。对于MySQL 5.7及以上版本,安全初始化步骤不再需要。最后,文章还提到了安装后可能出现的问题及解决方案,如普通用户登录权限问题。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

系统环境:CentOS-7-x86_64-Minimal-1804
MySQL官方帮助文档:https://dev.mysql.com/doc/mysql-yum-repo-quick-guide/en/

环境准备:

  • 使用wget下载工具和yum-config-manager命令需要安装yum-utils
$ sudo yum install -y wget yum-utils

MySQL 安装

下载 MySQL Yum 仓库

官网网址:https://dev.mysql.com/downloads/repo/yum/

CentOS 7选择Red Hat Enterprise Linux 7 / Oracle Linux 7 (Architecture Independent), RPM Package以下是下载链接 (截至2018-12-11最新)

$ wget https://dev.mysql.com/get/mysql80-community-release-el7-1.noarch.rpm

添加到MySQL Yum 的仓库

$ sudo rpm -Uvh mysql80-community-release-el7-1.noarch.rpm

选择要安装的 MySQL 版本

用以下命令查看MySQL YUM库中的所有版本,并查看其中哪些已启用或禁用

$ sudo yum repolist all | grep mysql
$ sudo yum repolist enabled | grep mysql

默认安装最新的GA系列(GA为Generally Available一般可用版本,稳定版),不需要其他配置。

以下命令禁用 8 系版本并启用 5.7 系版本

$ sudo yum-config-manager --disable mysql80-community
$ sudo yum-config-manager --enable mysql57-community

安装MySQL ( Installing MySQ

$ sudo yum install -y mysql-community-server

启动 MySQL Server

  • 启动 MySQL Server:
$ sudo systemctl start mysqld.service
  • 检查MySQL Server的状态:
$ sudo systemctl status mysqld.service
  • 设置开机启动
$ sudo systemctl enable mysqld.service
  • 安装时默认创建了“root”@“localhost”,密码也被随机设置,在日志文件中记录。
    可以下命令查看:
$ grep 'temporary password' /var/log/mysqld.log | awk '{print $NF}'
  • 更改root密码:
$ mysql -uroot -p
mysql> ALTER USER 'root'@'localhost' IDENTIFIED BY '新的密码';

注意:MySQL的validate_password插件默认安装。 这将要求密码包含至少一个大写字母,一个小写字母,一个数字和一个特殊字符,并且密码总长度至少为8个字符。

MySQL 安全初始化 (仅适用于MySQL 5.6)

安装MySQL 5.7或更高版本的话,不需要运行,因为 Yum 安装程序已经执行了该程序的功能。

$ mysql_secure_installation

New password: 
Re-enter new password: 

是否安装密码检测插件?
Would you like to setup VALIDATE PASSWORD plugin?Press 

是否更改root密码?
Change the password for root ? ((Press y|Y for Yes, any other key for No) : 

是否移除匿名用户呀?
Remove anonymous users? (Press y|Y for Yes, any other key for No) : 

是否禁止root远程登陆呀?
Disallow root login remotely? (Press y|Y for Yes, any other key for No) : 

是否删除测试数据库呀?
Remove test database and access to it? (Press y|Y for Yes, any other key for No) : 

是否现在就刷新授权表呀?
Reload privilege tables now? (Press y|Y for Yes, any other key for No) : 

其他问题:

Ubuntu下,使用sudo安装mysql后,普通用户登录时会出现该问题

$ mysql -uroot -p
Enter password: 
ERROR 1698 (28000): Access denied for user 'root'@'localhost'

原因:
可以查看一下user表,rootpluginauth_socket
正常情况用密码登陆的plugin应该是mysql_native_password

mysql> select user, plugin from mysql.user;
+-----------+-----------------------+
| user      | plugin                |
+-----------+-----------------------+
| root      | auth_socket           |
| mysql.sys | mysql_native_password |
| dev       | mysql_native_password |
+-----------+-----------------------+

解决措施:
只要把auth_socket改成mysql_native_password就行

$ sudo mysql -uroot -p
mysql> USE mysql;
mysql> SELECT user, plugin FROM user;
mysql> UPDATE user SET plugin='mysql_native_password' WHERE User='root';
mysql> FLUSH PRIVILEGES;
mysql> SELECT user, plugin FROM user;
mysql> exit;
$ sudo systemctl restart mysqld.service
### 安装前准备 确保服务器已更新至最新状态并安装必要的依赖包: ```bash yum update -y yum install wget nano net-tools vim gcc-c++ cmake bison-devel ncurses-devel openssl-devel perl -y ``` ### 检测现有 MySQL 或 MariaDB 并移除 为了防止版本冲突,建议先检查是否有旧版 MySQL 或 MariaDB 存在,并将其完全卸载[^2]。 ```bash rpm -qa | grep -i mysql rpm -qa | grep -i mariadb ``` 如果发现任何与 MySQL 或 MariaDB 相关的结果,则需执行如下命令来安全地卸载它们: ```bash rpm -e --nodeps [package_name] ``` 其中 `[package_name]` 是通过上述 `grep` 命令获取的具体软件包名称。对于无法正常卸载的情况,可以考虑使用强制删除的方式处理残留文件夹和数据目录,在此之前务必确认停止了相关服务: ```bash service mysqld stop || service mariadb stop whereis mysql find / -name mysql rm -rf [path_to_mysql_or_mariadb_files] ``` 请注意备份重要资料后再操作以上指令。 ### 下载 MySQL 5.7.38 前往官方下载页面或直接利用wget工具从镜像站点拉取压缩包: ```bash cd /usr/local/src/ wget https://dev.mysql.com/get/Downloads/MySQL-5.7/mysql-5.7.38-linux-glibc2.12-x86_64.tar.gz tar zxvf mysql-5.7.38-linux-glibc2.12-x86_64.tar.gz mv mysql-5.7.38-linux-glibc2.12-x86_64 /usr/local/mysql-5.7.38 ln -s /usr/local/mysql-5.7.38 /usr/local/mysql ``` 创建所需用户组和服务账户用于运行数据库实例: ```bash groupadd mysql useradd -r -g mysql -s /bin/false mysql chown -R mysql:mysql /usr/local/mysql/* ``` 初始化数据库环境: ```bash mkdir -p /data/mysql/{data,logs,tmp} chmod 750 /data/mysql/tmp chown -R mysql:mysql /data/mysql/ /usr/local/mysql/bin/mysqld \ --user=mysql \ --basedir=/usr/local/mysql \ --datadir=/data/mysql/data ``` 设置开机自启脚本并将之加入系统服务管理器中去: ```bash cp /usr/local/mysql/support-files/mysql.server /etc/init.d/mysqld chkconfig --add mysqld chkconfig mysqld on ``` 编辑配置文件 `/etc/my.cnf` 来指定基础参数设定(如未存在则新建),注意调整 `basedir`, `datadir` 和其他必要选项指向正确位置[^4]: ```ini [mysqld] basedir = /usr/local/mysql datadir = /data/mysql/data socket = /tmp/mysql.sock port = 3306 character-set-server=utf8mb4 collation-server=utf8mb4_unicode_ci explicit_defaults_for_timestamp=true max_connections=500 innodb_buffer_pool_size=1G server-id=1 log-bin=mysql-bin expire_logs_days=7 slow_query_log_file=/var/log/slow.log long_query_time=2 ``` 启动 MySQL 服务并验证其工作状况: ```bash /etc/init.d/mysqld start netstat -tunlp | grep :3306 ``` 最后一步是登录到新部署好的 MySQL 实例内完成初始的安全加固措施,比如修改 root 密码、禁用远程访问等功能特性[^3]。
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值