Ubuntu16.04 配置mysql并修改存储路径的艰难之旅
2017-04-23 00:16
429 查看
之前一直在windows上用mysql,现在在ubuntu16 上用mysql,并安装了workbench。
1)安装过程
安装过程比较简单,
即可安装好mysql,不用去镜像下载再一步步手动安装,那对安装顺序要求比较高,而且用命令安装下载速度飞快,习惯了用命令安装以后已经尽量不考虑手动安装了。
然后安装workbench
比起手动安装来方便不少。
如果安装提示错误是正常的,不要着急,则进行这一步:
2)发现问题
安装完成后,mysql workbench 已经可以开始工作了,但我现在有两个问题:
1– workbench 操作配置文件的界面显示不可用,也不可以使用打开/关闭服务的按键
2 –默认路径为/var/lib/mysql, 而我的系统给它的分区较小,数据量很大,需要改存储路径
自此,我走上了8个小时的修行之旅,并找到了完美的解决方案,特此记录。
3)对于问题1,是因为workbench没有配置好配置文件的位置,这里需要理解的是,workbench 操作配置文件的界面只是一个对配置文件的操作工具,方便我们改某配置文件而已,你给了它一个文件路径,它就仅是会修改文件而不是将指定的文件配置给mysql——如果你指定的文件不是mysql正在使用的配置文件,那么怎么操作也没有意义。
首先,点击INSTANCE标签右边的扳手符号进入Manage Server Connections 配置界面后,System Profile中,System Type选Linux,Installation Type 是Custom;
Configuration File 要选择对mysql的配置有具体内容的文件,这一点很重要,一般的教程会告诉你,windows下配置文件是my.ini,在C盘隐藏的ProgramData文件夹的mysql相关文件夹里,而ubuntu的是my.cnf,在/etc下或者在/etc/mysql下,不错,my.cnf 的确是mysql的配置文件,但打开后,它的内容是:
继续浏览整个文件夹与子文件夹的所有内容,会发现,只有/etc/mysql/mysql.conf.d/mysqld.cnf 里面有真正的配置内容,需要将它放到Configuration File的路径信息上面板才会出现具体的配置信息。
然后在Configuration File Section 填 mysqld。
开关mysql命令分别填写:
修改完我以为第1个问题解决了,测试一下:
分别显示存储路径与字符集信息,在配置面板修改这些信息,然而重复执行这两条命令,没有丝毫改变,也就是,对配置文件的修改,是没有起到效果的,起码对存储路径与字符集信息的修改没用。
后来不停尝试,强行stop service无果,就打算关机重来。。可是系统开不了机了。。我在系统崩溃后崩溃了一会儿,和妈妈打了一个电话,心情稍微平复后,抱着重装系统的心情重新开张(之前我的深度学习平台与各种软件的配置也是有时间成本的啊!)。我是双系统电脑,选择Ubuntu后就一直黑屏有一个光标在左上角闪了一个小时都不进入系统,问题我猜测可能是引导启动出了问题,当初使用EasyBCD做的双系统引导选择,所以在Windouws上重新设置了一下Ubuntu的启动设置,问题就解决了——幸亏发现了这个方法,不然我又要搭进两天时间配各种环境与软件了。
闲话不说了,方法继续:
因为权限问题,各种想查看的文件十分麻烦,用
重新开机后,首先,需要将存储文件夹
尝试:
这时我搜索到了修改配置文件不起作用的原因——Apparmor
得到最关键的一步
然而,还是有:
因此,开始了早就该开始的——查看log
mysql的错误日志在
这是因为在我修改配置文件时,加了一句
然后出现了新的错误:
原来是我复制到新路径的文件权限问题,
修改权限:
又出现了类似的问题,原来全都没有权限!
这样太不科学,最好不要随便修改原来文件的属性,与原文件夹的内容对比一下,发现是文件从属用户与用户组变了,可能因为直接用root权限复制过来,新建的文件夹归属root,而原来是归属mysql的,所以会出现mysql对文件操作时会没有权限报错,那么将其改回去即可:
这时,新的存储路径里的内容与原来的内容完全相同了,包括文件属性。
此时,mysql可以成功打开了,而且配置文件也可以使用,存储路径也已经改变,问题都解决了,一切变成了生机勃勃的样子。
最后一些记录tips:
多亏了这篇文章的提醒,我才想起查看日志来解决问题
启动
停止
重启
设置禁止mysql开机自启动(apt-get安装的mysql默认是开机自启动的)
发现的好的资料MySQL配置文件my.cnf参数优化和中文详解
PS: Ubuntu 的中文输入早就想吐嘈了。。
1)安装过程
安装过程比较简单,
sudo apt-get update sudo apt-get install mysql-server mysql-client
即可安装好mysql,不用去镜像下载再一步步手动安装,那对安装顺序要求比较高,而且用命令安装下载速度飞快,习惯了用命令安装以后已经尽量不考虑手动安装了。
然后安装workbench
sudo apt-get mysql-workbench
比起手动安装来方便不少。
如果安装提示错误是正常的,不要着急,则进行这一步:
sudo apt-get -f install sudo apt-get mysql-workbench
2)发现问题
安装完成后,mysql workbench 已经可以开始工作了,但我现在有两个问题:
1– workbench 操作配置文件的界面显示不可用,也不可以使用打开/关闭服务的按键
2 –默认路径为/var/lib/mysql, 而我的系统给它的分区较小,数据量很大,需要改存储路径
自此,我走上了8个小时的修行之旅,并找到了完美的解决方案,特此记录。
3)对于问题1,是因为workbench没有配置好配置文件的位置,这里需要理解的是,workbench 操作配置文件的界面只是一个对配置文件的操作工具,方便我们改某配置文件而已,你给了它一个文件路径,它就仅是会修改文件而不是将指定的文件配置给mysql——如果你指定的文件不是mysql正在使用的配置文件,那么怎么操作也没有意义。
首先,点击INSTANCE标签右边的扳手符号进入Manage Server Connections 配置界面后,System Profile中,System Type选Linux,Installation Type 是Custom;
Configuration File 要选择对mysql的配置有具体内容的文件,这一点很重要,一般的教程会告诉你,windows下配置文件是my.ini,在C盘隐藏的ProgramData文件夹的mysql相关文件夹里,而ubuntu的是my.cnf,在/etc下或者在/etc/mysql下,不错,my.cnf 的确是mysql的配置文件,但打开后,它的内容是:
!includedir /etc/mysql/conf.d/ !includedir /etc/mysql/mysql.conf.d/
继续浏览整个文件夹与子文件夹的所有内容,会发现,只有/etc/mysql/mysql.conf.d/mysqld.cnf 里面有真正的配置内容,需要将它放到Configuration File的路径信息上面板才会出现具体的配置信息。
然后在Configuration File Section 填 mysqld。
开关mysql命令分别填写:
/etc/init.d/mysql start /etc/init.d/mysql stop
修改完我以为第1个问题解决了,测试一下:
show variables like '%datadir%'; show variables like 'character%';
分别显示存储路径与字符集信息,在配置面板修改这些信息,然而重复执行这两条命令,没有丝毫改变,也就是,对配置文件的修改,是没有起到效果的,起码对存储路径与字符集信息的修改没用。
后来不停尝试,强行stop service无果,就打算关机重来。。可是系统开不了机了。。我在系统崩溃后崩溃了一会儿,和妈妈打了一个电话,心情稍微平复后,抱着重装系统的心情重新开张(之前我的深度学习平台与各种软件的配置也是有时间成本的啊!)。我是双系统电脑,选择Ubuntu后就一直黑屏有一个光标在左上角闪了一个小时都不进入系统,问题我猜测可能是引导启动出了问题,当初使用EasyBCD做的双系统引导选择,所以在Windouws上重新设置了一下Ubuntu的启动设置,问题就解决了——幸亏发现了这个方法,不然我又要搭进两天时间配各种环境与软件了。
闲话不说了,方法继续:
因为权限问题,各种想查看的文件十分麻烦,用
sudo nautilus就可以在图形界面自由打开和修改文件夹与文件了,被逼到一定程度可以这么做,但是在修改任何文件之前最好先备份,不小心改了哪里就真的跪了。
重新开机后,首先,需要将存储文件夹
/var/lib/mysql/原封不动复制到我的新存储位置上去
/home/baiyu/Project/mysql/
尝试:
service mysql start Job for mysql.service failed because the control process exited with error code. See "systemctl status mysql.service" and "journalctl -xe" for details.
这时我搜索到了修改配置文件不起作用的原因——Apparmor
得到最关键的一步
apparmor控制了应用的目录访问权限,所以mysql是绕不开它的。 修改“/etc/apparmor.d/usr.sbin.mysqld”文件。 将其中默认的data目录是: /var/lib/mysql/ r, /var/lib/mysql/** rwk, 把这两行修改为移动过的的实际的数据文件目录,例如: /home/baiyu/Project/mysql/ r, /home/baiyu/Project/mysql/** rwk, 保存,执行 service apparmor restart 重启apparmor服务。
然而,还是有:
baiyu@baiyu-ubuntu:~$ service apparmor restart baiyu@baiyu-ubuntu:~$ service mysql start Job for mysql.service failed because the control process exited with error code. See "systemctl status mysql.service" and "journalctl -xe" for details.
因此,开始了早就该开始的——查看log
mysql的错误日志在
/var/log/mysql下,上面的时间是英国时间,与我现在时差8小时,差点让我以为找错地方了,开始debug:
[Note] InnoDB: Using CPU crc32 instructions mysqld: Can't create/write to file '/home/baiyu/Project/mysql/temp/ibY3R47W' (Errcode: 2 - No such file or directory)
这是因为在我修改配置文件时,加了一句
tmpdir = /home/baiyu/Project/mysql/temp,先注释掉。从这里可以看出,配置文件的修改起到了作用,多亏了修改apparmor的那一步。
然后出现了新的错误:
[ERROR] InnoDB: The innodb_system data file 'ibdata1' must be writable
原来是我复制到新路径的文件权限问题,
修改权限:
ls -l -rw-r----- 1 root root 56 4月 22 00:28 auto.cnf -rw-r--r-- 1 root root 0 4月 22 00:28 debian-5.7.flag -rw-r----- 1 root root 320 4月 22 19:44 ib_buffer_pool -rw-r----- 1 root root 12582912 4月 23 2017 ibdata1 -rw-r----- 1 root root 50331648 4月 23 2017 ib_logfile0 -rw-r----- 1 root root 50331648 4月 22 00:28 ib_logfile1 -rw-r----- 1 root root 12582912 4月 23 2017 ibtmp1 drwxrwxrwx 2 root root 4096 4月 22 00:28 mysql d-wx--xr-- 2 root root 4096 4月 22 17:59 mytest drwxr-x--- 2 root root 4096 4月 22 00:28 performance_schema drwxr-x--- 2 root root 12288 4月 22 00:28 sys drwxr-x--- 2 root root 4096 4月 22 19:10 test sudo chmod 666 ibdata1
又出现了类似的问题,原来全都没有权限!
这样太不科学,最好不要随便修改原来文件的属性,与原文件夹的内容对比一下,发现是文件从属用户与用户组变了,可能因为直接用root权限复制过来,新建的文件夹归属root,而原来是归属mysql的,所以会出现mysql对文件操作时会没有权限报错,那么将其改回去即可:
baiyu@baiyu-ubuntu:~/Project/mysql$ sudo chown -R mysql.mysql mysql baiyu@baiyu-ubuntu:~/Project/mysql$ ls -l 总用量 122916 -rw-r----- 1 root root 56 4月 22 00:28 auto.cnf -rw-r--r-- 1 root root 0 4月 22 00:28 debian-5.7.flag -rw-r----- 1 mysql mysql 255 4月 22 22:45 ib_buffer_pool -rw-rw-rw- 1 root root 12582912 4月 22 22:45 ibdata1 -rw-rw-rw- 1 root root 50331648 4月 22 22:45 ib_logfile0 -rw-rw-rw- 1 root root 50331648 4月 22 00:28 ib_logfile1 -rw-r----- 1 mysql mysql 12582912 4月 22 22:45 ibtmp1 drwxrwxrwx 2 mysql mysql 4096 4月 22 00:28 mysql d-wx--xr-- 2 root root 4096 4月 22 17:59 mytest drwxr-x--- 2 root root 4096 4月 22 00:28 performance_schema drwxr-x--- 2 root root 12288 4月 22 00:28 sys drwxr-x--- 2 root root 4096 4月 22 19:10 test baiyu@baiyu-ubuntu:~/Project/mysql$ sudo chown -R mysql.mysql sys baiyu@baiyu-ubuntu:~/Project/mysql$ sudo chown -R mysql.mysql test baiyu@baiyu-ubuntu:~/Project/mysql$ sudo chown -R mysql.mysql performance_schemabaiyu@baiyu-ubuntu:~/Project/mysql$ sudo chown -R mysql.mysql mytest baiyu@baiyu-ubuntu:~/Project/mysql$ sudo chown mysql.mysql auto.cnf baiyu@baiyu-ubuntu:~/Project/mysql$ sudo chown mysql.mysql ib_buffer_pool baiyu@baiyu-ubuntu:~/Project/mysql$ sudo chown mysql.mysql ibdata1 baiyu@baiyu-ubuntu:~/Project/mysql$ sudo chown mysql.mysql ib_logfile0 baiyu@baiyu-ubuntu:~/Project/mysql$ sudo chown mysql.mysql ib_logfile1 baiyu@baiyu-ubuntu:~/Project/mysql$ sudo chown mysql.mysql ibtmp1 baiyu@baiyu-ubuntu:~/Project/mysql$ ls -l 总用量 122916 -rw-r----- 1 mysql mysql 56 4月 22 00:28 auto.cnf -rw-r--r-- 1 root root 0 4月 22 00:28 debian-5.7.flag -rw-r----- 1 mysql mysql 255 4月 22 22:46 ib_buffer_pool -rw-rw-rw- 1 mysql mysql 12582912 4月 22 22:47 ibdata1 -rw-rw-rw- 1 mysql mysql 50331648 4月 22 22:47 ib_logfile0 -rw-rw-rw- 1 mysql mysql 50331648 4月 22 00:28 ib_logfile1 -rw-r----- 1 mysql mysql 12582912 4月 22 22:47 ibtmp1 drwxrwxrwx 2 mysql mysql 4096 4月 22 00:28 mysql d-wx--xr-- 2 mysql mysql 4096 4月 22 17:59 mytest drwxr-x--- 2 mysql mysql 4096 4月 22 00:28 performance_schema drwxr-x--- 2 mysql mysql 12288 4月 22 00:28 sys drwxr-x--- 2 mysql mysql 4096 4月 22 19:10 test
这时,新的存储路径里的内容与原来的内容完全相同了,包括文件属性。
此时,mysql可以成功打开了,而且配置文件也可以使用,存储路径也已经改变,问题都解决了,一切变成了生机勃勃的样子。
最后一些记录tips:
多亏了这篇文章的提醒,我才想起查看日志来解决问题
启动
start mysql 或者 service mysql start 或者 /etc/init.d/mysql start
停止
stop mysql 或者 service mysql stop 或者 /etc/init.d/mysql stop
重启
restart mysql 或者 service mysql restart 或者 /etc/init.d/mysql restart
设置禁止mysql开机自启动(apt-get安装的mysql默认是开机自启动的)
sudo update-rc.d mysql disable
发现的好的资料MySQL配置文件my.cnf参数优化和中文详解
PS: Ubuntu 的中文输入早就想吐嘈了。。
相关文章推荐
- Ubuntu16.04中MySQL安装配置及修改字符集编码
- ubuntu16.04 修改mysql配置文件my.cnf编码出错---解决方法
- ubuntu 16.04 mysql安装,配置,修改编码改为utf-8
- ubuntu下mysql安装路径更改及密码修改
- ubuntu下修改MySQL的配置文件my.cnf
- Ubuntu 16.04中如何修改mysql的编码为utf-8
- 修改MySql 数据默认存储路径
- mac pro 安装mysql并且配置my.cnf(添加默认字符集utf8,数据存放路径,修改已经建好的表的默认字符集等)
- ubuntu下修改MySQL的配置文件my.cnf
- ubuntu mysql 配置文件my.cnf 更改tmp路径
- 【中文分词-全文搜索】Ubuntu 16.04 Mysql和PHP 配置 Sphinx-for-chinese 及Sphinx的排序筛选分页基本操作
- ubuntu16.04-mysql 配置
- Ubuntu 修改mysql存放路径后无法启动解决办法
- Ubuntu10.4, SUSE11.2下 mysql5.1/5.5的安装与简单配置(包括增加用户和修改字符集)
- 修改mysql5.6数据存储路径
- 解决:ubuntu16.04下修改mysql字符集为utf8却找不到配置文件的问题
- ubuntu下mysql安装路径更改及密码修改
- Ubuntu MySQL 修改数据库路径 及 主从复制
- Ubuntu中vsftp配置(二)-- Ubuntu中vsftp修改默认路径
- ubuntu下修改mysql默认data路径