Debian11安装MySQL8详细教程

系统环境

Debian11 x64 最小化安装

mysql-8.0.35-linux-glibc2.28-x86_64.tar.xz

本教程全程在 root 用户下操作,并且本教程安装仅仅是最基础的安装,不涉及任何优化设置,仅学习MySQL作用。

环境依赖

apt-get install -y libaio1 libncurses6 libnuma1 sysv-rc-conf

安装过程

获取通用二进制安装包

# 这是MySQL官方下载地址,下载后使用XFTP上传至 root 用户家目录下
https://dev.mysql.com/downloads/mysql/
  • 解压安装包
tar -xvf mysql-8.0.35-linux-glibc2.28-x86_64.tar.xz
mv mysql-8.0.35-linux-glibc2.28-x86_64 /usr/local/mysql

创建用户以及用户组,因为mysql用户不涉及登录,仅作为运行用户使用

groupadd mysql
useradd -r -g mysql -s /bin/false mysql

添加环境变量

vim /etc/profile
# 在文件尾部加上如下代码后保存退出,一定要是最末尾
export PATH=$PATH:/usr/local/mysql/bin
# 刷新文件,使配置生效
source /etc/profile

创建相应目录并赋予合适权限

# 本次安装数据根目录为/data/mysql 安装目录为/usr/local/mysql
mkdir -p /data/mysql/data /data/mysql/log
touch /data/mysql/log/mysql.err /data/mysql/mysql.pid /data/mysql/mysql.sock
chown mysql:mysql -R /usr/local/mysql
chown mysql:mysql -R /data/mysql
ln -s /data/mysql/mysql.sock /tmp/mysql.sock

配置文件编写

nano /etc/my.cnf

输入以下内容

[mysqld]
# 设置能访问数据库的ip地址 0.0.0.0代表无限制
bind-address=0.0.0.0
# 设置3306端口
port=3306
# 设置mysql的安装目录
basedir=/usr/local/mysql
# 设置mysql数据库的数据的存放目录
datadir=/data/mysql/data
# 本地连接的 socket 套接字
socket=/data/mysql/mysql.sock
# 错误日志存放位置
log_error=/data/mysql/log/mysql.err
# pid-file文件位置 当MySQL实例启动时,会将自己的进程ID写入一个文件中——该文件即为pid文件
pid_file=/data/mysql/mysql.pid
# 允许最大连接数(连接数不是越大越好,一般单机100链接的连接池绰绰有余)
max_connections=100
# 允许连接失败的次数。这是为了防止有人从该主机试图攻击数据库系统
max_connect_errors=100
# 服务端使用的字符集默认为UTF8
character-set-server=utf8mb4
# 创建新表时将使用的默认存储引擎
default-storage-engine=INNODB
# MySQL8默认使用“caching_sha2_password”插件认证
# 以前的默认是"mysql_native_password":现在已经弃用
default_authentication_plugin=mysql_native_password
# 是否对sql语句大小写敏感,1表示不敏感
lower_case_table_names = 1
# MySQL连接闲置超过一定时间后(单位:秒)将会被强行关闭
# MySQL默认的wait_timeout  值为8个小时, interactive_timeout参数需要同时配置才能生效
interactive_timeout = 1800
wait_timeout = 1800
# Metadata Lock最大时长(秒), 一般用于控制 alter操作的最大时长sine mysql5.6
# 执行 DML操作时除了增加innodb事务锁外还增加Metadata Lock,其他alter(DDL)session将阻塞
lock_wait_timeout = 3600
# 内部内存临时表的最大值。
# 比如大数据量的group by ,order by时可能用到临时表,
# 超过了这个值将写入磁盘,系统IO压力增大
tmp_table_size = 64M
max_heap_table_size = 64M
# 参考:https://www.cnblogs.com/widgetbox/p/10178035.html
# 个人选择 0,因为使用 load data(包括INSERT … SELECT和REPLACE … SELECT)的场景实属不多
innodb_autoinc_lock_mode = 0
[mysql]
# 设置mysql客户端默认字符集
default-character-set=utf8mb4
[client]
# 设置mysql客户端连接服务端时默认使用的端口
port=3306
default-character-set=utf8mb4

无注释版

[mysqld]
bind-address=0.0.0.0
user=mysql
port=3306
basedir=/usr/local/mysql
datadir=/data/mysql/data
socket=/data/mysql/mysql.sock
log_error=/data/mysql/log/mysql.err
pid_file=/datal/mysql/mysql.pid
max_connections=100
max_connect_errors=100
character-set-server=utf8mb4
default-storage-engine=INNODB
default_authentication_plugin=caching_sha2_password
lower_case_table_names = 1
interactive_timeout = 1800
wait_timeout = 1800
lock_wait_timeout = 3600
tmp_table_size = 64M
max_heap_table_size = 64M
innodb_autoinc_lock_mode = 0
[mysql]
default-character-set=utf8mb4
[client]
port=3306
default-character-set=utf8mb4

初始化MySQL

# 未指定的参数由配置文件获取
mysqld --initialize

查看密码

# 初始化后使用该命令获取临时root密码
grep 'root@localhost:' /data/mysql/log/mysql.err | cut -d':' -f2-

创建mysql服务

# 将mysql.server放置到/etc/init.d/mysql中
cp /usr/local/mysql/support-files/mysql.server /etc/init.d/mysqld
# 赋予可执行权限
chmod +x /etc/init.d/mysqld
# 添加服务
sysv-rc-conf mysqld on
# 显示服务列表
sysv-rc-conf --list

# 如果看到mysqld的服务,并且3,4,5都是开的话则成功,如果是关,则键入
sysv-rc-conf --level 345 mysqld on

刷新配置文件

systemctl daemon-reload

mysql服务操作

# 启动MySQL
systemctl start mysqld
# 重启MySQL
systemctl restart mysqld
# 停止MySQL
systemctl stop mysqld
# MySQL状态
systemctl status mysqld

登录MySQL

mysql -u root -p

修改临时root密码和修改相应权限

ALTER USER 'root'@'localhost' IDENTIFIED WITH mysql_native_password BY '123456';
USE mysql
UPDATE user set host = '%' where user = 'root'; 
FLUSH PRIVILEGES;

最后编辑时间:2023年12月23日07:08:27

posted @ 2022-07-20 17:20  tothk  阅读(1823)  评论(0编辑  收藏  举报