首页 > 技术文章 > MySQL安装

lihw-study 2021-11-25 17:45 原文

参考资料

MySQL安装

1.Linux 安装

1.1 mysql-8.0.26版本

官方文档安装说明:https://dev.mysql.com/doc/refman/8.0/en/linux-installation.html

个人习惯使用压缩包版本的,官方压缩包版本的安装说明文档:https://dev.mysql.com/doc/refman/8.0/en/binary-installation.html
下载地址:https://downloads.mysql.com/archives/community/

我这里选择 mysql-8.0.26-linux-glibc2.17-x86_64-minimal-rebuild.tar.xz 版本的mysql。
image

查看 glibc 版本命令: rpm -qa | grep glibc

如果之前安装过mysql 一定要确保安装的文件删除掉。注意需要删除 /etc/my.cnf 或者/etc/mysql 路径下的启动选项文件。

1.2 安装步骤

1.2.1 安装依赖包

(1)libaio

# 查找安装包
yum search libaio
# 安装 libaio
yum install libaio

image

(2)ncurses-compat-libs
mysql-VERSION-el7-x86_64.tar.gz 和 mysql-VERSION-linux-glibc2.12-x86_64.tar.xz 没有安装 lib64/libtinfo.so.5,所以需要手动安装

yum install ncurses-compat-libs
1.2.2 创建 mysql 用户和用户组
# 添加 mysql 用户组
groupadd mysql

# 添加 mysql 用户
#       -r 创建一个系统账户
#       -g 指定哪个用户组
#       -s 用户登录的shell名
useradd -r -g mysql -s /bin/false mysql
1.2.3 解压 mysql-8.0.26-linux-glibc2.17-x86_64-minimal-rebuild.tar.xz

(1)将mysql-8.0.26-linux-glibc2.17-x86_64-minimal-rebuild.tar.xz 上传到服务器 /opt/mysql 路径下(路径你可以自己定义)。
(2)解压 mysql-8.0.26-linux-glibc2.17-x86_64-minimal-rebuild.tar.xz

# 切换到上传目录下
cd /opt/mysql/
# 解压压缩包
xz -d mysql-8.0.26-linux-glibc2.17-x86_64-minimal-rebuild.tar.xz
tar -xvf mysql-8.0.26-linux-glibc2.17-x86_64-minimal-rebuild.tar

image

# 重命名解压后文件夹
mv mysql-8.0.26-linux-glibc2.17-x86_64-minimal-rebuild mysql-8.0.26

image

1.2.4 切换到 /usr/local
cd /usr/local/
1.2.5 将 /opt/mysql/mysql-8.0.26/ 软链到 /usr/local/mysql
ln -s /opt/mysql/mysql-8.0.26/ mysql

image

1.2.6 切换到 /usr/local/mysql,并创建 mysql-files文件夹
cd mysql
# 其实在 /opt/mysql/mysql-8.0.26/下创建 mysql-files
mkdir mysql-files

# 将 mysql-files所有权赋给 mysql用户
chown mysql:mysql mysql-files
# 修改权限
chmod 750 mysql-files
1.2.7 初始化 mysql 数据目录
# 初始化数据目录,完成后安装目录下多了一个 data 文件夹。
bin/mysqld --initialize --user=mysql 
bin/mysql_ssl_rsa_setup

image

注意:一定要记住这个临时密码。

1.2.8 mysqld_safe启动 mysql 服务
bin/mysqld_safe --user=mysql &

image

Ctrl + c 取消后,进行验证。

1.2.9 验证

(1) 查看 mysql 进程

ps -ef|grep mysql

image

(2)查看启动错误日志

cat /usr/local/mysql/data/192.168.188.134.err

image

(3) bin/mysqladmin 验证

 bin/mysqladmin -u root -p version
Enter password: (enter root password here)

但是报错:
image

改为 私用 mysql 连接数据库

bin/mysql -u root -p

image
登录成功。修改root密码:

ALTER USER 'root'@'localhost' IDENTIFIED BY '新密码';

image
退出,重新登录后查看数据库:
image

再次使用bin/mysqladmin version验证:

 bin/mysqladmin -u root -p version
Enter password: (enter root password here)

image

1.2.10 MySQL workbench 连接数据库

(1)报错:无法连接服务器
image
解决方案:
可参考 《无法访问 CentOS7服务器上应用监听的端口》开启防火墙端口。

(2)使用root连接报错
image

参考 《centos7 打开mysql 3306端口并设置外部访问》centos7 打开mysql 3306端口并 设置外部访问

解决方法:

# 服务器使用root登录
/usr/local/mysql/bin/mysql -u root -p 
# 输入密码,按回车
# 新增普通用户black(注意 一定是%而不是localhost,如果是localhost则只能本地访问)
 create user 'black'@'%' identified by 'black';
# 给付权限
 grant select,insert,update,delete,create,drop,alter,INDEX on *.* to 'black'@'%' ; 
 或
 grant all privileges on *.* to 'black'@'%' with grant option;

# 刷新权限
flush privileges;

给用户赋权限,参考
https://www.cnblogs.com/xiaofengchu/p/8416173.html

使用 black 用户连接成功:
image

2.windows 安装

2.1 下载 mysql-8.0.26-winx64.zip 并解压

将下载的 mysql-8.0.26-winx64.zip 解压到 e:\work\software下

2.2 初始化数据目录

因为压缩包版本没有自带数据目录,所以安装前需要初始化数据目录。

  1. 在 E:\work\software\mysql-8.0.26-winx64 下创建 data 文件夹。
  2. 使用 mysqld.exe --initialize 进行数据目录初始化
# 进入 mysql-8.0.26 安装目录下的 bin 目录
cd E:\work\software\mysql-8.0.26-winx64\bin
# 初始化数据目录 (basedir 指定的是mysql 安装目录,datadir指定数据文件存放路径)
mysqld.exe --initialize --console --basedir=E:\work\software\mysql-8.0.26-winx64  --datadir=E:\work\software\mysql-8.0.26-winx64\data

还可以通过配置文件进行初始化:

  1. 在 E:\work\software\mysql-8.0.26-winx64 下创建一个名字为 mysql.ini 文件,内容如下:
[mysqld]
basedir=E:\\work\\software\\mysql-8.0.26-winx64
datadir=E:\\work\\software\\mysql-8.0.26-winx64\\data
  1. 初始化数据目录
mysqld.exe --initialize --console --defaults-file=E:\work\software\mysql-8.0.26-winx64\mysql.ini

注意: 通过 --initialize 初始化时会给 root 用户生成随机密码(有过期时间)。

初始化完成后,

  1. mysql会在数据目录下创建 mysql 系统数据库和它的表
  2. server 会初始化系统表空间和相关的数据结构。
  3. 创建 root@localhost 用户

执行初始化命令:
image
命令执行完成后,data 目录下的内容:
image

查看 SC-202108201319.err 内容获取 root用户随机密码:
image

2.3 启动 mysql

启动命令:

cd E:\work\software\mysql-8.0.26-winx64\bin
mysqld.exe --console --defaults-file=E:\work\software\mysql-8.0.26-winx64\mysql.ini

image

保持此CMD窗口不动,再开启 CMD 窗口,使用mysql.exe -u root -p连接 mysql:
image
注意: root 用户的密码是 SC-202108201319.err 里打印的,由于很复杂,避免输入错误,可以复制粘贴过来。

2.4 修改 root 用户密码

使用 mysql.exe -u root -p --default-character-set=utf8mb4连接 mysql后,输入以下语句修改 root 用户密码:

ALTER USER 'root'@'localhost' IDENTIFIED BY 'root';

注意:此 root 用户只能通过命令行连接登陆,如果需要远程连接则需要在创建用户时将主机换成'%'或者具体IP:

# 创建一个可以远程连接的用户 black
create user 'black'@'%' identified by 'black';

2.5 将 mysql 作为 window 服务启动

问题:
注意,前面启动 mysql 后必须保证CMD窗口一直打开,mysql 服务才可以一直运行,这样可不行!

解决方案:

  1. 启动命令加上-d 参数,即可后台运行
  2. 将 mysql 作为 window 服务可解决。

参考官方文档: 作为 window 服务启动

cd E:\work\software\mysql-8.0.26-winx64\bin
# 注册服务名为 mysql8 
mysqld.exe --install  mysql8  --defaults-file=E:\work\software\mysql-8.0.26-winx64\mysql.ini
# 启动 mysql8 服务
net start mysql8

image

停止服务命令:

net stop mysql8

移除服务命令:

mysqld.exe --remove  mysql8

2.6 添加自定义用户

  1. 创建 black 用户
create user 'black'@'%' identified by 'black';

  1. 授权
    mysql 支持的权限有:https://dev.mysql.com/doc/refman/8.0/en/grant.html#grant-privileges
grant ALTER,CREATE,DROP,INSERT,SELECT,UPDATE,DELETE,INDEX,REFERENCES,PROCESS,SHOW DATABASES,TRIGGER,LOCK TABLES,GRANT OPTION ON *.* to  'black'@'%';
  1. 刷新授权
FLUSH PRIVILEGES;

image

2.7 测试

在命令行使用 black 登录,并查看有哪些数据库:
image

创建 blackdb 数据库:

create database  blackdb;

使用 DBeaver 连接测试
image

至此,mysql 8.0.26 安装完成。

2.8 设置字符集

查看当前的字符集设置:

SHOW VARIABLES LIKE 'character_set%';

image

  1. 通过set names 命令动态设置字符集
set names 'utf8mb4'

image

set names等同于

SET character_set_client = charset_name;
SET character_set_results = charset_name;
SET character_set_connection = charset_name;

character_set_client,character_set_results,character_set_connection可通过mysql.exe -u root -p --default-character-set=utf8mb4修改。

  1. mysql.ini 文件添加:
[mysqld]
character-set-server=utf8mb4
collation-server=utf8mb4_0900_ai_ci

其他

mysql 读取配置文件顺序:

image
image

修改时区

查看时区:

show variables like "%time_zone%";
  1. mysql.ini 添加:
[mysqld]
default-time_zone=+8:00
  1. 命令设置
# 设置东八区
set global time_zone = '+8:00';
set time_zone = '+8:00';
flush privileges;

推荐阅读