ubuntu16.04 mysql修改datadir的折腾


回顾:

主要是mysql-systemd-start脚本中的路径开始没修改,换这种启动方式后没注意到他,引出了初始化数据库的一堆折腾。




OS:Ubuntu16.04

MySQL:5.7.17


apt install之后默认datadir 为/var/lib/mysql,希望修改下datadir的路径

修改/etc/mysql/mysql.conf.d/mysqld.cnf中的datadir,并删除了原来的/var/lib/mysql文件夹(也可将这个原来的内容mv过去,就不用初始化了),

修改/etc/apparmor.d/usr.sbin.mysqld中的datadir路径为新的值, 并service apparmor reload重启服务。


在新路径下执行数据库初始化

在/webdata/db存在,但mysql不存在情况下,执行报无权限。如果手动创建,又报路径已存在的错误。

zhujinhua@ThinkPad-E455:/webdata$ mysqld --initialize
mysqld: Can't create directory '/webdata/db/mysql/' (Errcode: 13 - Permission denied)
2016-12-17T14:50:43.250752Z 0 [Warning] TIMESTAMP with implicit DEFAULT value is deprecated. Please use --explicit_defaults_for_timestamp server option (see documentation for more details).
2016-12-17T14:50:43.261000Z 0 [ERROR] Aborting

参考了:

http://bugs.mysql.com/bug.php?id=82281

https://blogs.oracle.com/jsmyth/entry/apparmor_and_mysql
了解到是apparmor的问题。但路径确实修改过了。


这个通过暂时停止apparmor的服务执行数据库初始化成功




启动mysql服务,

zhujinhua@ThinkPad-E455:/webdata$ systemctl restart mysql.service
Job for mysql.service failed because the control process exited with error code. See "systemctl status mysql.service" and "journalctl -xe" for details.
启动失败,按提示查看原因




zhujinhua@ThinkPad-E455:/webdata$ journalctl -xe
12月 17 23:22:26 ThinkPad-E455 systemd[1]: Stopped MySQL Community Server.
-- Subject: Unit mysql.service has finished shutting down
-- Defined-By: systemd
-- Support: http://lists.freedesktop.org/mailman/listinfo/systemd-devel
-- 
-- Unit mysql.service has finished shutting down.
12月 17 23:22:26 ThinkPad-E455 systemd[1]: Starting MySQL Community Server...
-- Subject: Unit mysql.service has begun start-up
-- Defined-By: systemd
-- Support: http://lists.freedesktop.org/mailman/listinfo/systemd-devel
-- 
-- Unit mysql.service has begun starting up.
12月 17 23:22:26 ThinkPad-E455 mysql-systemd-start[31248]: MySQL system database not found. Please run mysql_install_db tool.
12月 17 23:22:26 ThinkPad-E455 systemd[1]: mysql.service: Control process exited, code=exited status=1
12月 17 23:22:26 ThinkPad-E455 systemd[1]: Failed to start MySQL Community Server.
-- Subject: Unit mysql.service has failed
-- Defined-By: systemd
-- Support: http://lists.freedesktop.org/mailman/listinfo/systemd-devel
-- 
-- Unit mysql.service has failed.
-- 
-- The result is failed.
12月 17 23:22:26 ThinkPad-E455 systemd[1]: mysql.service: Unit entered failed state.
12月 17 23:22:26 ThinkPad-E455 systemd[1]: mysql.service: Failed with result 'exit-code'.
12月 17 23:22:27 ThinkPad-E455 systemd[1]: mysql.service: Service hold-off time over, scheduling restart.
12月 17 23:22:27 ThinkPad-E455 systemd[1]: Stopped MySQL Community Server.
-- Subject: Unit mysql.service has finished shutting down
-- Defined-By: systemd
-- Support: http://lists.freedesktop.org/mailman/listinfo/systemd-devel
-- 
-- Unit mysql.service has finished shutting down.
12月 17 23:22:27 ThinkPad-E455 systemd[1]: mysql.service: Start request repeated too quickly.
12月 17 23:22:27 ThinkPad-E455 systemd[1]: Failed to start MySQL Community Server.
-- Subject: Unit mysql.service has failed
-- Defined-By: systemd
-- Support: http://lists.freedesktop.org/mailman/listinfo/systemd-devel
-- 
-- Unit mysql.service has failed.
-- 
-- The result is failed.



查看/usr/share/mysql/mysql-systemd-start文件

sanity () {
  if [ ! -r /etc/mysql/my.cnf ]; then
    echo "MySQL configuration not found at /etc/mysql/my.cnf. Please create one."
    exit 1
  fi

  if [ ! -d /var/lib/mysql ] && [ ! -L /var/lib/mysql ]; then
    echo "MySQL data dir not found at /var/lib/mysql. Please create one."
    exit 1
  fi

  if [ ! -d /var/lib/mysql/mysql ] && [ ! -L /var/lib/mysql/mysql ]; then
    echo "MySQL system database not found. Please run mysql_install_db tool."
    exit 1
  fi
}

原来这里的路径还是以前的,于是定义个新变量,值为新路径,将设计原路径的统统修改
sanity () {
  if [ ! -r /etc/mysql/my.cnf ]; then
    echo "MySQL configuration not found at /etc/mysql/my.cnf. Please create one."
    exit 1
  fi

  datadir=/webdata/db/mysql
  sysdbdir=$datadir/mysql
  if [ ! -d $datadir ] && [ ! -L $datadir ]; then
    echo "MySQL data dir not found at $datadir. Please create one."
    exit 1
  fi

  if [ ! -d $sysdbdir ] && [ ! -L $sysdbdir ]; then
    echo "MySQL system database $sysdatadir not found. Please run mysql_install_db tool."
    exit 1
  fi
}


启动成功后从error.log中找到初始化时生产的密码,

2016-12-17T14:56:46.781127Z 1 [Note] A temporary password is generated for root@localhost: xxxxxx

用此登录即可

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
### 回答1: 在Ubuntu 16.04上安装MySQL离线安装包可以按照以下步骤进行: 1. 首先,从MySQL官方网站下载适合Ubuntu 16.04MySQL离线安装包(.tar.gz文件)。确保选择与您的操作系统和架构相对应的文件。 2. 下载完成后,将离线安装包文件移动到您希望安装MySQL的目录。例如,可以将文件移动到“/opt”目录中。 3. 打开终端,使用cd命令切换到包含MySQL安装包的目录。 4. 使用以下命令解压缩安装包: ``` sudo tar -zxvf mysql-*.tar.gz ``` 这将解压缩安装包文件。解压缩完成后,您将在当前目录中看到一个包含MySQL文件的目录。 5. 执行以下命令以安装MySQL服务: ``` sudo apt-get install mysql-server ``` 安装过程中,系统将提示您输入MySQL的root密码。请提供一个安全且易于记住的密码,并再次确认。 6. 安装完成后,使用以下命令启动MySQL服务: ``` sudo service mysql start ``` 您可以使用以下命令确认MySQL服务是否已成功启动: ``` sudo service mysql status ``` 如果MySQL正在运行,将显示“active (running)”的消息。 7. 若要登录到MySQL控制台,请使用以下命令: ``` mysql -u root -p ``` 系统将提示您输入MySQL的root密码。输入密码后,您将登录到MySQL命令行界面。 这样,您就成功安装了MySQL离线安装包,并可以在Ubuntu 16.04上使用MySQL了。请注意,这只是一个简单的指南,安装过程可能因个人环境而有所不同。 ### 回答2: Ubuntu 16.04MySQL离线安装包可以通过以下步骤进行安装: 1.首先,在可以访问互联网的计算机上,下载适用于Ubuntu 16.04MySQL离线安装包。你可以在MySQL官方网站或镜像站点上找到适合你的版本。 2.将下载的离线安装包文件传输到目标计算机的任意目录中。 3.在目标计算机上,打开终端。 4.使用以下命令进入 Bash Shell 环境。 sudo -s 5.在Bash Shell环境下,使用cd命令进入离线安装包所在的目录。 例如,如果安装包在Downloads目录中,可以使用以下命令进入: cd /home/用户名/Downloads 6.使用以下命令解压缩下载的离线安装包。 tar xvf mysql-文件名.tar 7.进入解压后的MySQL目录,使用以下命令进行安装。 sudo dpkg -i mysql-文件名.deb 8.安装过程中,系统会提示你需要的依赖关系是否满足。如果不满足,你可以使用以下命令解决依赖关系问题。 sudo apt-get -f install 9.完成安装后,你可以使用以下命令启动和停止MySQL服务。 sudo service mysql start sudo service mysql stop 这样,你就成功地在Ubuntu 16.04上安装了MySQL离线包。记得根据你的需求进行相应的配置和设置。如果有其他问题,可以参考MySQL官方文档或向相关的技术社区寻求帮助。 ### 回答3: 在Ubuntu 16.04上安装MySQL的离线安装包可以按照以下步骤进行操作: 1. 首先,进入MySQL官方网站(www.mysql.com)并下载适用于Ubuntu 16.04MySQL离线安装包。确保你选择了适用于Ubuntu 16.04的正确版本。 2. 一旦下载完成,将安装包移动到你想要安装MySQL的目录中,比如 /opt 目录下。 3. 打开终端,并切换到目录,输入 cd /opt。 4. 然后解压缩安装包,输入 sudo tar xvfz mysql-[version]-[platform].tar.gz。请替换 [version] 和 [platform] 为你下载的文件名称。 5. 解压缩完成之后,进入解压缩的目录,输入 cd mysql-[version]-[platform]。 6. 接下来,创建 MySQL 数据库目录,输入 sudo mkdir /usr/local/mysql。 7. 然后,将解压缩的内容复制到 MySQL 数据库目录中,输入 sudo cp -R * /usr/local/mysql。 8. 之后,进入 MySQL 数据库目录,输入 cd /usr/local/mysql。 9. 为 MySQL 设置所属的用户和用户组,输入 sudo chown -R mysql:mysql *。 10. 设置 MySQL 服务器的配置文件,输入 sudo cp support-files/my-default.cnf /etc/my.cnf。 11. 接下来,进入 MySQL 安装目录,输入 cd /usr/local/mysql。 12. 执行安装脚本,输入 sudo bin/mysqld --initialize --user=mysql。 13. 启动 MySQL 服务器,输入 sudo bin/mysqld_safe --user=mysql &。 14. 最后,设置 MySQL 根密码,输入 sudo bin/mysqladmin -u root password 'new-password'。请替换 'new-password' 为你想设置的密码。 现在,MySQL应该已经成功地安装到Ubuntu 16.04的系统中。你可以通过输入 sudo service mysql start 来检查MySQL服务器的状态,并使用用户名和密码登录MySQL

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值