跳到主要内容

CentOS 7 安装 MySQL

一、MySQL 的版本

  • MySQL Community Server 社区版本
  • MySQL Enterprise Edition 企业版本
  • MySQL Cluster 集群版
  • MySQL Cluster CGE 高级集群版

二、下载 MySQL

下载地址:https://dev.mysql.com/downloads/mysql/

1、下载 mysql-8.0.34-1.el7.x86_64.rpm-bundle.tar

mysql-8.0.34-1.el7.x86_64.rpm-bundle.tar
# 8.0.34 版本号
# 1 发布次数
# el7 系统版本
# x86_64 架构
# rpm-bundler.tar 包含一个或多个 rpm 包

解压之后的文件列表

2、安装要求

  1. 需要有 /tmp 文件夹的读写权限。是因为在安装的时候,mysql 会在 /tmp 下新建 tmp_db 文件。
    • chmod -R 777 /tmp
  2. 检查依赖
    • rpm -qa | grep libaio
    • rpm -qa | hrep net-tools

3、rpm package 的安装顺序

  • mysql-community-common MySQL服务端和客户端的通用库文件
  • mysql-community-client-plugins
  • mysql-community-libs
  • mysql-community-client
  • mysql-community-icu-data-files 为 MySQL 数据库提供了处理字符集、排序、比较和国际化相关功能所需的数据和规则 (8.0.34 需要安装这个)
  • mysql-community-server
# -i , --install 安装软件包
# -v , --verbose 详细信息输出
# -h , --hash 软件包安装的时候列出哈希标记,展示进度条
rpm -ivh mysql-community-xxx.rpm

4、查看 MySQL 的版本

mysql --version
mysqladmin --version

5、服务的初始化

MySQL 数据目录的初始化和生成初始的数据库文件。

mysqld --initialize --user=mysql

1. 初始化数据目录。

通过 cat /etc/my.cnf 可以查看到 datair 所配置的目录。这个目录就是 MySQL 的数据目录。在安装 MySQL 的时候,就会创建这个目录。但是里面什么内容都没有。

2. 指定用户

mysqld --user=mysql 指定 MySQL 服务运行时所使用的系统用户。确保 MySQL 进程有足够的权限来访问数据目录和执行必要的操作。 MySQL 在安装时会默认创建 mysql 用户。

3. 生成临时密码

生成 MySQLroot 用户的密码。会把密码写在 /var/log/mysqld.log 中。通过 cat /var/log/mysqld.log | grep password 命令来查看临时密码。

6、启动 MySQL 服务

# .service 后缀加不加都行
systemctl start mysqld.service

7、查看 MySQL 是否自启动

systemctl list-unit-files | grep mysqld.service

如果不为自启动,可以通过使用下面的命令来设置为自启动

systemctl enable mysqld.service

取消自启动的命令

systemctl disable mysqld.service

8、登录 MySQL

mysql -uroot -p 
# 输入密码

使用临时密码登录时,需要重新修改密码。不然执行任何语句都会失败。

9、修改密码

alter user 'root'@'localhost' identified by 'root';

会出现报错

ERROR 1819 (HY000): Your password does not satisfy the current policy requirements

解决方法:在 my.cnf 中加入下面的配置,并重启 MySQL 服务即可。

validate_password.check_user_name=OFF  
validate_password.length=4
validate_password.mixed_case_count=0
validate_password.number_count=0
validate_password.policy=0
validate_password.special_char_count=0