Mysql在Ubuntu 24.04的安装与配置

45 阅读3分钟

安装与初始化

使用apt直接安装

  1. 切换为root权限
  2. 使用命令apt install mysql-server安装
  3. 使用命令systemctl start mysql启动
  4. 使用命令systemctl enable mysql设置开机自启
  5. 修改配置,让mysql允许从其他服务器远程访问
# 执行命令修改配置文件
vim /etc/mysql/mysql.conf.d/mysqld.cnf
# 找到bind-address = 127.0.0.1修改为下行,并保存退出
bind-address=0.0.0.0
  1. 使用命令systemctl restart mysql重启mysql服务

初始化

  1. 安装完成后执行命令mysql_secure_installation进行安全初始化,按提示操作:
  • 是否启用 VALIDATE PASSWORD PLUGIN?建议选 Y(可设密码强度)
  • 设置 root 密码(强烈建议设置强密码)
  • 删除匿名用户? → Y
  • 禁止 root 远程登录? → Y(除非你需要远程管理)
  • 删除测试数据库? → Y
  • 重新加载权限表? → Y

初始化root密码

  1. 没设置root密码时,在本机上可以使用mysql -u root免密登录
  2. 切换到mysql数据库use mysql;
  3. 修改密码alter user 'root'@'localhost' identified by 'password', 其中password替换为你自己的密码
  4. 如果想root用户也支持远程登录,需要将user表的host字段的值修改为%:update user set host='%' where user='root', 不建议这么做,建议创建新用户,或者重新添加一个root@%用户:create user 'root'@'%' identified by 'password', 将password替换为你自己的密码
  5. 刷新权限flush privileges;
  6. exit退出重新登录

创建用户

  1. 使用命令mysql -u root -p并输入root密码登录mysql服务
  2. 切换到mysql数据库use mysql;
  3. 创建用户并设置密码create user 'username'@'%' identified by 'password';,其中username替换为你的用户名,password替换为你的密码,密码建议设置复杂点,%号表示该用户可以远程访问
  4. 给用户赋予创建数据库的权限grant create on *.* to 'username'@'%';,赋权之后可以使用show grants for 'username'@'%';查看权限,建议由DBA创建库,只赋予对应的CREATE, INSERT, SELECT, INSERT, UPDATE, DELETE, SHOW VIEW权限,或者ALL PRIVILEGES
  5. 刷新权限flush privileges;
  6. 如果要取消权限:revoke create on *.* for 'username'@'%',再刷新即可

主从配置

主库配置

  1. vim /etc/mysql/mysql.conf.d/mysqld.conf 修改mysql的配置文件

# 主库ID配置, 主库,从库不能相同
server-id = 1
# 开启binlog日志,mysql-bin是日志的前缀名
log-bin=mysql-bin
binlog_expire_logs_seconds = 604800  # 7天,自动清理过期日志

# MySQL 8.0 推荐设置(避免复制问题)
binlog_format = ROW
gtid_mode = ON
enforce_gtid_consistency = ON
  1. 重启mysql服务systemctl restart mysql
  2. 创建复制专用用户并赋予权限
-- 创建复制用户(允许从 192.168.1.11 连接)
CREATE USER 'repl'@'192.168.1.11' IDENTIFIED BY 'StrongReplPass123!';

-- 授予复制权限
GRANT REPLICATION SLAVE ON *.* TO 'repl'@'192.168.1.11';

-- 刷新权限
FLUSH PRIVILEGES;

从库配置

  1. vim /etc/mysql/mysql.conf.d/mysqld.conf 修改mysql的配置文件

[mysqld]
server-id = 2          # 必须与主库不同
read_only = ON         # 强烈建议开启(防止误写)
relay-log = relay-bin  # 中继日志(可选,默认开启)

# 如果主库用了 GTID,从库也必须开启
gtid_mode = ON
enforce_gtid_consistency = ON
  1. 重启mysql服务systemctl restart mysql
  2. 配置主从复制
create user if not exists 'repl'@'从库IP' identified  by 'password';
ALTER USER 'repl'@'从库IP' IDENTIFIED WITH 'mysql_native_password' AS '*833E73FBACE6E892AE550941EFCB2B2687008599

-- 停止从库复制(如果之前有)
STOP REPLICA;

-- 配置主库信息
CHANGE REPLICATION SOURCE TO
  SOURCE_HOST='192.168.1.10',
  SOURCE_PORT=3306,
  SOURCE_USER='repl',
  SOURCE_PASSWORD='StrongReplPass123!',
  SOURCE_AUTO_POSITION=1;  -- 关键!启用 GTID 自动定位

-- 启动复制
START REPLICA;

验证复制是否成功

SHOW REPLICA STATUS\G

问题定位

-- 查看每个 worker 的错误详情(MySQL 5.7+) 
SELECT * FROM performance_schema.replication_applier_status_by_worker\G

生成测试数据

  1. 使用官方压测工具sysbench: apt install sysbench安装
  2. 生成测试数据sysbench --db-driver=mysql --mysql-user=username -mysql-password=password --mysql-password=123456 \ --mysql-db=test tables=4 --table-size=100000 oltp_common prepare