title: Mysql 8. 0安装 #标题tags: #标签
date: 2022-01-01
categories: mysql # 分类

记录下mysql 8.0版本的安装,和5.7版本差别不大。

下载并解压安装包

  1. $ wget https://downloads.mysql.com/archives/get/p/23/file/mysql-8.0.26-linux-glibc2.12-x86_64.tar.xz
  2. $ tar Jxf mysql-8.0.26-linux-glibc2.12-x86_64.tar.xz -C /data/
  3. ln -sf /data/mysql-8.0.26-linux-glibc2.12-x86_64 /data/mysql-3306

配置环境变量及配置文件

  1. # 编辑配置文件(配置文件中的路径以实际的为准)
  2. $ cat > /etc/my.cnf << EOF
  3. [mysqld]
  4. basedir=/data/mysql-3306
  5. datadir=/data/mysql-3306/data
  6. pid-file=/data/mysql-3306/data/mysqld.pid
  7. log-error=/data/mysql-3306/data/mysql.err
  8. socket=/tmp/mysql.sock
  9. [client]
  10. socket=/tmp/mysql.sock
  11. EOF
  12. # 配置环境变量
  13. $ cat >> /etc/profile << 'EOF'
  14. PATH=${PATH}:/data/mysql-3306/bin/
  15. EOF
  16. source /etc/profile

初始化并启动数据库

  1. # 创建所需目录及用户并更改属主
  2. $ mkdir /data/mysql-3306/data
  3. useradd -M -s /sbin/nologin mysql
  4. chown -R mysql.mysql /data/mysql-*
  5. # 初始化数据库
  6. $ mysqld --initialize --user mysql
  7. # 修改数据库控制脚本
  8. $ sed -i 's#^basedir=.*#basedir=/data/mysql-3306/#' /data/mysql-3306/support-files/mysql.server
  9. sed -i 's#^datadir=.*#basedir=/data/mysql-3306/data/#' /data/mysql-3306/support-files/mysql.server
  10. # 添加为系统服务
  11. $ cp /data/mysql-3306/support-files/mysql.server /etc/init.d/mysqld
  12. chkconfig --add mysqld
  13. # 启动并设置为开机自启
  14. $ systemctl enable mysqld
  15. systemctl start mysqld
  16. # 确认端口在监听
  17. $ ss -lnpt |grep 3306
  18. LISTEN 0 151 :::3306 :::* users:(("mysqld",pid=7607,fd=23))
  19. LISTEN 0 70 :::33060 :::* users:(("mysqld",pid=7607,fd=21))

修改mysql的root用户初始密码

  1. #获取root用户的初始密码
  2. $ grep 'password' /data/mysql-3306/data/mysql.err | awk -F'root@localhost: ' '{print $2}'
  3. # 重置密码为123.com
  4. $ mysql -uroot -p -e "alter user 'root'@'localhost' identified by '123.com';" --connect-expired-password
  5. #使用新密码进行登录测试
  6. $ mysql -uroot -p123.com

授权用户可以指定IP访问

在mysql5.8之前的版本,可以直接grant all 去授权并创建用户,在5.8之后的版本就只能先创建用户,再授权访问了,如下:

  1. # 创建用户
  2. $ create user 'root'@'%' identified by '123.com';
  3. # 授权
  4. $ grant all privileges on *.* to 'root'@'%' with grant option;