ubuntu安装mysql8指定数据目录

ubuntu安装mysql8指定数据目录

背景

Ubuntu 22.04.3 LTS

安装步骤

  1. 更新到最新版本

    sudo apt update
    
  2. 添加 MySQL APT 仓库

    执行命令期间需要按回车键,控制台提示Press [ENTER] to continue or Ctrl-c to cancel.

    sudo apt install software-properties-common -y
    sudo add-apt-repository universe
    sudo apt-key adv --recv-keys --keyserver hkp://keyserver.ubuntu.com:80 0xF1656F24C74CD1D8
    sudo add-apt-repository 'deb [arch=amd64,arm64,ppc64el] http://repo.mysql.com/mysql-8.0/ubuntu $(lsb_release -cs) universe'
    
  3. 安装 MySQL

在安装过程中,系统会提示你设置 root 用户的密码。

# 安装
sudo apt install mysql-server -y

# 安装完成后可能会启动mysql。需要先停止
sudo systemctl stop mysql
  1. 配置数据挂载目录

新目录为/data/mysqldata

  • 新建数据目录

    sudo mkdir /data/mysqldata
    sudo chown -R mysql:mysql /data/mysqldata
    sudo chmod 755 /data/mysqldata
    
  • 将文件copy(MySQL 默认的数据目录位于 /var/lib/mysql

     cp -arp /var/lib/mysql/* /data/mysqldata
    
  • 修改配置

    # 编辑配置文件
    vim /etc/mysql/mysql.conf.d/mysqld.cnf
    
    # 修改指定选项(注意备份)
    datadir=/data/mysqldata
    
    # 修改配置文件
    sudo vim /etc/apparmor.d/usr.sbin.mysqld 
    
    # 修改指定选项(注意备份)
    # Allow data dir access
      /data/mysqldata/ r,
      /data/mysqldata/** rwk,
      
    # 重启apparmor服务
    sudo service apparmor restart
    
  1. 启动 MySQL

    sudo systemctl start mysql
    sudo systemctl enable mysql
    
  2. 验证 MySQL 安装

    # 默认没有密码(直接回车)
    mysql -u root -p
    SHOW VARIABLES LIKE 'datadir';
    

注意:

  • 在更改数据目录之前,请确保 MySQL 服务没有运行,以避免数据损坏。
  • 如果你更改了数据目录,可能需要在启动 MySQL 时指定新的数据目录位置。
  • 确保 MySQL 用户对新的数据目录有读写权限。
  • 如果你遇到权限问题,可能需要检查 SELinux 或 AppArmor 的配置。

修改root用户

生产环境不建议此项。不建议将root暴露

mysql -u root -p
# 使用mysql库
use mysql;
# 修改root登陆主机为%
update user set host = '%' where user ='root';
# 修改root密码插件
UPDATE user SET plugin='caching_sha2_password' WHERE User='root';
# 刷新权限
flush privileges;
# 修改root密码
ALTER USER 'root'@'%' IDENTIFIED WITH caching_sha2_password BY '我是密码';
# 刷新权限
flush privileges;

查询用户

select host, user, authentication_string, plugin from user;

你可能感兴趣的:(ubuntu,linux,mysql)