回顾:

主要是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
用此登录即可

ubuntu16.04 mysql修改datadir的折腾的更多相关文章

  1. three.js模拟实现太阳系行星体系功能

    这篇文章主要介绍了three.js模拟实现太阳系行星体系功能,本文通过实例代码给大家介绍的非常详细,具有一定的参考借鉴价值,需要的朋友可以参考下

  2. HTML5页面无缝闪开的问题及解决方案

    这篇文章主要介绍了HTML5页面无缝闪开方案,本文通过实例代码给大家介绍的非常详细,对大家的学习或工作具有一定的参考借鉴价值,需要的朋友可以参考下

  3. ios – 为什么,将nil作为参数从Objc C发送到swift类初始化器,用新对象替换nil参数

    除非属性本身被声明为nonnull:

  4. ios – 在Swift中对MKCircle进行子类化

    我想通过添加另一个String属性来继承MKCircle,我们称之为“代码”.这个属性不是可选的和常量的,所以我必须从初始化器设置它,对吧?有没有办法定义一个单一的便利初始化器,在这种情况下需要3个参数?本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容,请发送邮件至dio@foxmail.com举报,一经查实,本站将立刻删除。

  5. ios – AVAudioPlayer不再使用Swift 2.0/Xcode 7 beta

    对于我的iPhone应用程序中的vartestAudio声明,我在这里收到错误“调用可以抛出,但错误不能从属性初始化程序中抛出”当我转到Xcode7测试版时,就发生了这种情况.如何在Swift2.0中使用此音频剪辑?

  6. ios – 斯威夫特.在初始化所有存储的属性之前在方法调用中使用’self’

    解决方法在初始化所有非可选实例变量之前,您无法在self上调用方法.有几种方法可以解决这个问题.>将属性更改为选项或隐式解包选项(不建议)>使buildCircle()方法静态或只是一个在文件中运行并为所有圆圈调用addSubview()在所有属性初始化并且您调用之后super.init()等等.你必须避免在自己之前打电话给自己class已初始化.

  7. ios – Objective-C警告未找到超类“-init”的指定的初始化程序的方法覆盖

    我在一个应用程序中清理警告,我收到了两次这个警告对于这行代码和这一行我相当新的Objective-C和谷歌这个警告,只是不明白的解决方案我的问题是如何摆脱这些警告?

  8. ios – UICollectionView不能使用UISearchController?

    在WWDC2014年的“AInsideInsidePresentationControllers”中,演示者展示了如何在UITableView中设置UISearchController.他们通过设置searchController的searchBar框架,然后将其设置为tableView的tableHeaderView来实现.不幸的是,UICollectionView没有相当于tableHeade

  9. ios7 – 如何使用默认的IOS映像

    嗨,我是IOS开发的新手.我知道如何在IOS应用程序中使用图像.但是我不知道如何使用默认图像,如开发者站点中提到的共享或书签图标.我想用它们我必须下载这些图像集或那些可用在xcode?

  10. ios – 在词典上引用成员’subscript’

    我正在尝试为类创建一个可用的初始化程序.我的类将使用来自网络请求的输入进行初始化.网络不可靠,我想创建一个初始化器,检查所有属性上的存在,否则它将失败.我试图在这里使用守卫,所以请随时指出方法中的任何明显的错误:守卫self.jobId行无法编译,错误:对成员’下标’的模糊引用关于如何纠正这个错误的任何想法?

随机推荐

  1. crontab发送一个月份的电子邮件

    ubuntu14.04邮件服务器:Postfixroot收到来自crontab的十几封电子邮件.这些邮件包含PHP警告.>我已经解决了这些警告的原因.>我已修复每个cronjobs不发送电子邮件(输出发送到>/dev/null2>&1)>我删除了之前的所有电子邮件/var/mail/root/var/spool/mail/root但我仍然每小时收到十几封电子邮件.这些电子邮件来自cronjobs,

  2. 模拟两个ubuntu服务器计算机之间的慢速连接

    我想模拟以下场景:假设我有4台ubuntu服务器机器A,B,C和D.我想在机器A和机器C之间减少20%的网络带宽,在A和B之间减少10%.使用网络模拟/限制工具来做到这一点?

  3. ubuntu-12.04 – 如何在ubuntu 12.04中卸载从源安装的redis?

    我从源代码在Ubuntu12.04上安装了redis-server.但在某些时候它无法完全安装,最后一次makeinstallcmd失败.然后我刚刚通过apt包安装.现在我很困惑哪个安装正在运行哪个conf文件?实际上我想卸载/删除通过源安装的所有内容,只是想安装一个包.转到源代码树并尝试以下命令:如果这不起作用,您可以列出软件自行安装所需的步骤:

  4. ubuntu – “apt-get source”无法找到包但“apt-get install”和“apt-get cache”可以找到它

    我正在尝试下载软件包的源代码,但是当我运行时它无法找到.但是当我运行apt-cache搜索squid3时,它会找到它.它也适用于apt-getinstallsquid3.我使用的是Ubuntu11.04服务器,这是我的/etc/apt/sources.list我已经多次更新了.我尝试了很多不同的debs,并没有发现任何其他地方的错误.这里的问题是你的二进制包(deb)与你的源包(deb-src)不

  5. ubuntu – 有没有办法检测nginx何时完成正常关闭?

    &&touchrestarted),因为即使Nginx没有完成其关闭,touch命令也会立即执行.有没有好办法呢?这样的事情怎么样?因此,pgrep将查找任何Nginx进程,而while循环将让它坐在那里直到它们全部消失.你可以改变一些有用的东西,比如睡1;/etc/init.d/Nginx停止,以便它会休眠一秒钟,然后尝试使用init.d脚本停止Nginx.你也可以在某处放置一个计数器,这样你就可以在需要太长时间时发出轰击信号.

  6. ubuntu – 如何将所有外发电子邮件从postfix重定向到单个地址进行测试

    我正在为基于Web的应用程序设置测试服务器,该应用程序发送一些电子邮件通知.有时候测试是使用真实的客户数据进行的,因此我需要保证服务器在我们测试时无法向真实客户发送电子邮件.我想要的是配置postfix,以便它接收任何外发电子邮件并将其重定向到一个电子邮件地址,而不是传递到真正的目的地.我正在运行ubuntu服务器9.10.先感谢您设置本地用户以接收所有被困邮件:你需要在main.cf中添加:然后

  7. ubuntu – vagrant无法连接到虚拟框

    当我使用基本的Vagrantfile,只配置了两条线:我看到我的虚拟框打开,但是我的流氓日志多次显示此行直到超时:然后,超时后的一段时间,虚拟框框终于要求我登录,但是太久了!所以我用流氓/流氓记录.然后在我的物理机器上,如果我“流氓ssh”.没有事情发生,直到:怎么了?

  8. ubuntu – Nginx – 转发HTTP AUTH – 用户?

    我和Nginx和Jenkins有些麻烦.我尝试使用Nginx作为Jenkins实例的反向代理,使用HTTP基本身份验证.它到目前为止工作,但我不知道如何传递带有AUTH用户名的标头?}尝试将此指令添加到您的位置块

  9. Debian / Ubuntu – 删除后如何恢复/ var / cache / apt结构?

    我在ubuntu服务器上的空间不足,所以我做了这个命令以节省空间但是现在在尝试使用apt时,我会收到以下错误:等等显然我删除了一些目录结构.有没有办法做apt-getrebuild-var-tree或类似的?

  10. 检查ubuntu上安装的rubygems版本?

    如何查看我的ubuntu盒子上安装的rubygems版本?只是一个想法,列出已安装的软件包和grep为ruby或宝石或其他:)dpkg–get-selections

返回
顶部