CentOS 7 安装 MySQL 5.7

一.安装前的准备工作

  1. 卸载自带的MariaDB
    # 查询已安装的 mariadb 版本
    rpm -qa | grep mariadb
    # 如果本地存在该软件,则会显示软件完整名称
    # 例如:mariadb-libs-5.5.64-1.el7.x86_64
    # 卸载 mariadb
    rpm -e --nodeps mariadb-libs-5.5.64-1.el7.x86_64
    
  2. 检查numactl依赖是否安装
    # 先使用查询电脑是否已经安装了numactl依赖
    rpm -qa|grep numactl
    # 如果已经安装则不需要执行这条
    yum -y install numactl.x86_64
    
  3. 下载MySQL包
    官网:下载
    # 切换到一个目录用来存放下载的包
    /usr/local
    # 接下来我会将软件安装到这个文件夹中,如果与我不同,注意下面的操作按需更改路径
    # 使用wget方式下载mysql-5.7.29
    wget https://dev.mysql.com/get/Downloads/MySQL-5.7/mysql-5.7.29-linux-glibc2.12-x86_64.tar.gz
    

二.安装和配置

  1. 解压
    # 解压包
    tar -zxvf mysql-5.7.29-linux-glibc2.12-x86_64.tar.gz
    # 将解压的包改名为mysql
    mv mysql-5.7.29-linux-glibc2.12-x86_64 mysql
    # 创建数据库文件存放位置
    mkdir /usr/local/mysql/data
    
  2. 创建mysql用户用来维护数据库
    # 创建用户组:mysql
    groupadd mysql
    # 创建新用户mysql并添加到mysql用户组
    # useradd -g 用户组 新用户名
    useradd -g mysql mysql
    # 修改mysql用户的密码,长度超过8位连续输入两次
    passwd mysql
    # 赋予mysql用户安装路径的权限
    # chown -R 用户名:用户组 路径
    chown -R mysql:mysql /usr/local/mysql
    
  3. 安装
    # 切换到bin目录
    cd /usr/local/mysql/bin
    # 生成数据库实例
    ./mysqld --initialize --user=mysql --basedir=/usr/local/mysql --datadir=/usr/local/mysql/data
    # 生成的初始化密码一定要记下来,否则后面重制密码特别费劲
    
  4. 配置mysql系统参数
    # 在etc下创建mysql的配置文件
    touch /etc/my.cnf
    # 我用nano文本编辑器,没有的可以下一个或者用vi
    nano /etc/my.cnf
    
    将以下文本拷入,如果安装路径不同,请自行更改
    [mysql]
    default-character-set=utf8mb4
    [mysqld]
    character_set_server=utf8mb4
    # mysql安装位置
    basedir=/usr/local/mysql
    # mysql数据库文件保存路径
    datadir=/usr/local/mysql/data
    lower_case_table_names = 1
    # 启动日志位置
    log-error=/var/log/mysqld.log
    # mysql启动时进程ID临时保存位置,需要手动创建对应空文件
    pid-file=/usr/local/mysql/data/mysqld.pid
    
  5. 将mysql配置到系统服务中
    # 拷贝mysql系统服务文件到系统服务文件夹下
    cp /usr/local/mysql/support-files/mysql.server  /etc/init.d/mysql
    # 编辑文件
    nano /etc/init.d/mysql
    # 将basedir和datadir添加安装时配置的对应属性
    basedir=/usr/local/mysql
    datadir=/usr/local/mysql/data
    
  6. 将mysql配置到系统自启中
    chkconfig --add mysql
    chkconfig mysql on
    
  7. 将mysql配置到环境变量中
    # 编辑 /etc/profile 文件
    nano /etc/profile
    # 在文件末尾添加以下文本
    export PATH=$PATH:/usr/local/mysql/bin
    # 保存并退出
    # 刷新配置文件
    source /etc/profile
    # 测试
    mysql --version
    
  8. 问题:rm: cannot remove '/var/lock/subsys/mysql': Permission denied
    如果遇到以上问题,去/var/lock/subsys把mysql这个空文件删除。

三.初始化MySQL

  1. 启动
    注意:以下操作需要切换到新创建的用户下操作,否则会出现各种权限问题。
    # 确保mysql关闭
    service mysql stop
    # 启动mysql
    service mysql start
    
  2. 检查mysql是否成功设置开机自启
    chkconfig | grep -i mysql
    # 3、4、5为on则成功,如果不是则执行
    chkconfig --level 345 mysql on
    
  3. 修改root密码
    # 因为刚生成实例的mysql不修改root密码是禁止操作数据库的
    # 所以在外部环境就需要使用mysqladmin修改密码,前提mysql服务是启动的
    # 注意!如果宿主机和数据库不能保证在安全的连接下请勿使用此方法
    mysqladmin -u root -p password "新密码"
    # mysql会要求你输入原root用户密码,将初始化生成的密码粘进去
    
    如果遗失初始化的密码,请按照第四节方法初始化密码。
  4. 登陆
    mysql -uroot -p
    如果还没有重置密码,可以使用初始密码登陆进来,然后使用命令修改:set password for root@localhost = password('新密码');
  5. 新建用户并配置数据库权限
    -- 创建用户
    CREATE USER '用户名'@'%' IDENTIFIED BY '用户密码';
    -- 配置权限(详细的看有关权限的文档)
    GRANT SELECT, INSERT ON 数据库.* TO '用户'@'%';
    -- 刷新
    flush privileges;
    
  6. 配置防火墙
    如果安装并启用了防火墙(firewalld),需要为数据库的端口开通。
    # 查看防火墙状态,启动时状态为active (running)
    systemctl status firewalld
    # 开启端口
    firewall-cmd --zone=public --add-port=3306/tcp --permanent
    # 刷新防火墙
    firewall-cmd --reload
    # 查看已开启端口
    firewall-cmd --list-ports
    

四.忘记密码时修改密码的方法

  1. 使用root用户修改 /etc/my.cnf 文件
    nano /etc/my.cnf
    # 在[mysqld]后加入以下文本
    skip-grant-tables
    
  2. 重启mysql服务
    service mysql restart
  3. 执行以下命令跳过密码进入mysql进行修改密码
    # 登陆mysql
    cd /usr/local/mysql/bin
    ./mysql
    # 重置密码,进入库mysql
    use mysql;
    # 重置密码,注意不同版本的密码列名不同,用desc user查看
    update user set authentication_string=password("wasd2020") where user="root";
    # 刷新缓存表
    flush privileges;
    # 退出
    quit;
    
  4. 再修改 /etc/my.cnf 文件,将免密语句注释
    nano /etc/my.cnf
    # 用#注释掉skip-grant-tables
    #skip-grant-tables
    # 保存并退出
    
  5. 重启mysql服务
    service mysql restart
  6. 密码已经重置成功,使用新密码登陆即可
posted @ 2020-09-06 10:28  苍凉温暖  阅读(162)  评论(0编辑  收藏  举报