当前位置: 首页 > news >正文

Ubuntu 22.04 安装 MySQL 8.0 完整步骤文档

1、安装

1.1、下载
cd /usr/local/

/usr/local/ 下执行,下载资源包,可以本地下载上传

wget https://downloads.mysql.com/archives/get/p/23/file/mysql-8.0.32-linux-glibc2.12-x86_64.tar.xz
1.2、解压安装
tar -Jxvf mysql-8.0.32-linux-glibc2.12-x86_64.tar.xz

2、配置工作

2.1、基本设置
2.1.1、文件夹重命名

重命名 MySQL 文件夹

mv mysql-8.0.32-linux-glibc2.12-x86_64 mysql8
2.1.2、PATH 变量
vim /etc/profile# 在最下面追加
export PATH=$PATH:/usr/local/mysql8/bin# 重载环境变量
source /etc/profile
2.1.3、确认安装
mysql --version

如果有报错:

img

Ubuntu 24.04 通常已经安装了 libtinfo.so.6,我们手动为旧程序创建一个兼容链接:

sudo ln -s /lib/x86_64-linux-gnu/libtinfo.so.6 /lib/x86_64-linux-gnu/libtinfo.so.5

这个命令会让系统中的 libtinfo.so.5 “伪装”为 libtinfo.so.6,大多数老程序会正常运行。

⚠️ 如果你不确定 libtinfo.so.6 是否存在,可以先执行:

ls /lib/x86_64-linux-gnu/libtinfo*

img

2.2、创建用户组、用户

注:需要进入 /usr/local

创建用户组groupadd

groupadd mysql

创建用户useradd-r 创建系统用户,-g 指定用户组)

useradd -r -g mysql mysql
2.3、数据目录

创建目录

mkdir -p /data/mysql8_data

赋予权限

更改属主和数组

chown -R mysql:mysql /data/mysql8_data

更改模式 只有具有 root 权限的用户和 mysql 用户可以读取、写入和执行

chmod -R 700 /data/mysql8_data

3、初始化 & 启动

3.1、配置文件

/usr/local/etc/ 下创建 my.cnf 配置文件用于初始化 MySQL 数据库

vim /usr/local/etc/my.cnf
[mysql]
# 默认字符集
default-character-set=utf8mb4[client]
# 客户端使用的端口号
port=3306
# 客户端连接的 socket 路径
socket=/tmp/mysql.sock[mysqld]
# 服务端使用的端口号
port=3306
# 服务器 ID
server-id=3306
# MySQL 运行用户
user=mysql
# 日志时间系统时间
log_timestamps=SYSTEM
# 默认时区东八区
default-time_zone='+8:00'
# 服务器连接的 socket 路径
socket=/tmp/mysql.sock
# MySQL 安装目录
basedir=/usr/local/mysql8
# 数据存放目录
datadir=/data/mysql8_data/mysql
# 开启二进制日志功能
log-bin=/data/mysql8_data/mysql/mysql-bin
# InnoDB 数据文件存放目录
innodb_data_home_dir=/data/mysql8_data/mysql
# InnoDB 日志文件存放目录
innodb_log_group_home_dir=/data/mysql8_data/mysql
# MySQL 错误日志文件路径
log-error=/data/mysql8_data/mysql/mysql.log
# 存放 MySQL 进程 ID 的文件路径
pid-file=/data/mysql8_data/mysql/mysql.pid
# 表名大小写不敏感
lower_case_table_names=1
# 服务端字符集
character-set-server=utf8mb4
# SQL 模式设置
sql_mode=STRICT_TRANS_TABLES,NO_ZERO_IN_DATE,NO_ZERO_DATE,ERROR_FOR_DIVISION_BY_ZERO,NO_ENGINE_SUBSTITUTION
# 自动提交所有事务
autocommit=1
# 跳过排它锁定
skip-external-locking
# 键缓存大小
key_buffer_size=256M
# 允许的最大数据包大小
max_allowed_packet=1M
# 表缓存
table_open_cache=1024
# 排序缓存大小
sort_buffer_size=4M
# 网络缓冲区长度
net_buffer_length=8K
# 读取缓冲区大小
read_buffer_size=4M
# 随机读取缓冲区大小
read_rnd_buffer_size=512K
# MyISAM 排序缓冲区大小
myisam_sort_buffer_size=64M
# 线程缓存大小
thread_cache_size=128
# 临时表大小
tmp_table_size=128M
# 启用显式默认时间戳
explicit_defaults_for_timestamp=true
# 最大连接数
max_connections=500
# 连接错误最大数量
max_connect_errors=100
# 打开文件限制
open_files_limit=65535
# 二进制日志格式
binlog_format=mixed
# 二进制日志过期时间(秒)
binlog_expire_logs_seconds=864000
# 创建表时使用的默认存储引擎
default_storage_engine=InnoDB
# InnoDB 数据文件路径设置
innodb_data_file_path=ibdata1:10M:autoextend
# InnoDB 缓冲池大小
innodb_buffer_pool_size=1024M
# InnoDB 日志文件大小
innodb_log_file_size=256M
# InnoDB 日志缓冲区大小
innodb_log_buffer_size=8M
# InnoDB 每次提交时刷新日志
innodb_flush_log_at_trx_commit=1
# InnoDB 加锁等待超时时间(秒)
innodb_lock_wait_timeout=50
# 事务隔离级别为读已提交
transaction-isolation=READ-COMMITTED[mysqldump]
# 快速导出数据
quick
# 允许的最大数据包大小
max_allowed_packet=16M[myisamchk]
# 键缓存大小
key_buffer_size=256M
# 排序缓冲区大小
sort_buffer_size=4M
# 读取缓冲区大小
read_buffer=2M
# 写入缓冲区大小
write_buffer=2M[mysqlhotcopy]
# 交互式超时时间
interactive-timeout
3.2、初始化

需要进入 /usr/local/mysql8/bin,若添加了 PATH 变量可忽略。

初始化命令:注意文件夹名称。

–defaults-file:指定配置文件(要放在–initialize 前面)

–user: 指定用户

–basedir:指定安装目录

–datadir:指定初始化数据目录

–intialize-insecure:初始化无密码(否则生成随机密码)

mysqld --defaults-file=/usr/local/etc/my.cnf --basedir=/usr/local/mysql8 --datadir=/data/mysql8_data/mysql --user=mysql --initialize-insecure

可能会碰到问题

img

为兼容老程序,创建软链接把 libaio.so.1 指向实际存在的 libaio.so.1t64 文件

sudo ln -s /usr/lib/x86_64-linux-gnu/libaio.so.1t64 /usr/lib/x86_64-linux-gnu/libaio.so.1

然后,把这个链接再放到 MySQL 期望的路径:

sudo ln -s /usr/lib/x86_64-linux-gnu/libaio.so.1 /lib/x86_64-linux-gnu/libaio.so.1

最后更新缓存:

sudo ldconfig

之后再尝试启动 MySQL:

mysqld --defaults-file=/usr/local/etc/my.cnf --basedir=/usr/local/mysql8 --datadir=/data/mysql8_data/mysql --user=mysql --initialize-insecure

这样做是利用 libaio.so.1t64 来代替旧的 libaio.so.1,适配 Ubuntu 24.04 这种新架构。

3.3、启动 MySQL

查看 MySQL 的 /bin 下是否包含 mysqld_safe用于后台安全启动 MySQL

3.3.1、启动服务

安全后台启动 MySQL

# 完整命令
/usr/local/mysql8/bin/mysqld_safe --defaults-file=/usr/local/etc/my.cnf &
# 若添加了PATH变量,可省略如下
mysqld_safe --defaults-file=/usr/local/etc/my.cnf &

确认启动:第二条即 MySQL 服务。

ps -ef|grep mysql
3.3.2、登录
mysql -u root --skip-password
3.4、修改密码
# 修改密码
ALTER USER 'root'@'localhost' IDENTIFIED WITH mysql_native_password BY '新密码';# 设置密码永不过期(本地)
alter user 'root'@'localhost' password expire never;# 刷新权限
FLUSH PRIVILEGES;

4、远程连接 MySQL

4.1、创建远程连接用户
-- 选择 mysql 数据库,查看当前用户
USE mysql;--  host 字段表示可访问当前数据库的主机,目前仅本地可访问。
SELECT user,host,plugin,authentication_string FROM user;-- 创建用户
CREATE user 'root'@'%';-- 设置首次密码
ALTER USER 'root'@'%' IDENTIFIED WITH mysql_native_password BY '密码';-- 授权用户所有权限
GRANT ALL PRIVILEGES ON *.* TO 'root'@'%';-- 设置密码永不过期(远程)
alter user 'root'@'%' password expire never;-- 刷新权限
FLUSH PRIVILEGES;
http://www.dtcms.com/a/290847.html

相关文章:

  • 计算机网络中:传输层和网络层之间是如何配合的
  • 7月21日星期一今日早报简报微语报早读
  • 计算机史前时代:从原始计数到机械曙光
  • 计算机发展史:集成电路时代的微缩革命
  • Android 实例 - 分页器封装实现(上一页按钮、下一页按钮、当前页码 / 总页数、每页条数、总记录数)
  • 本地部署AI新选择!LocalAI+cpolar轻松实现隐私安全的远程访问
  • 数据结构:找出字符串中重复的字符(Finding Duplicates in a String)——使用哈希表
  • 一文彻底解释清楚Java 中的NIO、BIO和AIO
  • 记录解决问题--maven本地已有依赖,还是去远程仓库下载,导致打包失败
  • 期权到期会对大盘有什么影响?
  • 本地Linux服务器使用Docker快速部署SyncTV
  • 关于Aop动态代理
  • 线上问题排查之【CPU飙高100%】
  • 深入理解 C++ 中的指针与自增表达式:*a++、(*a)++ 和 *++a 的区别解析
  • spring入门
  • EMBMS1820芯祥科技18单元电池监控器芯片数据手册
  • MySQL二进制包安装
  • OpenAI Codex CLI与 Google Gemini CLI 比较
  • Match宣布2025曼谷发布会,发布“保本”资管新范式,旨在重塑Web3投资规则
  • 【科研绘图系列】R语言绘制棒棒图和哑铃图
  • neuronxcc包介绍及示例代码
  • IOPaint+CPolar:零公网IP也能搭建专属AI图像编辑平台
  • 【设计模式】迭代器模式 (游标(Cursor)模式)
  • 编程基础:职责分配
  • 14.7 Alpaca格式深度解析:3倍指令准确率提升的LLM微调秘诀
  • 【计算机组成原理】C语言中数据类型表示及转换总结
  • 第19章 AB实验的局限性
  • 完整的 SquareStudio 注册登录功能实现方案:
  • Docker Desktop安装nginx
  • 相机标定(非ROS相机)