Ubuntu初始化MySQL碰到的坑
想着将MySQL初始化,改变一下存放数据文件的位置:
root@ubuntu:/lvmdata# mkdir data
root@ubuntu:/lvmdata# chown -R mysql:mysql /lvmdata/data
修改MySQL配置文件:
datadir = /lvmdata/data
然后初始化:
root@ubuntu:/lvmdata# mysqld --initialize --user=mysql --datadir=/lvmdata/data
报错:
mysqld: Can't create directory '/lvmdata/data/' (Errcode: 17 - File exists)
好吧,我让你在data再建一个文件夹好了吧:
root@ubuntu:/lvmdata# mysqld --initialize --user=mysql --datadir=/lvmdata/data/data
mysqld: Can't create directory '/lvmdata/data/data/' (Errcode: 13 - Permission denied)
2018-01-07T08:59:15.782022Z 0 [ERROR] Aborting
。。。
建好了你说已存在,没建好你说没权限创建,可是明明权限都给mysql用户了啊。
查了下,是这玩意:
因为Ubuntu有个AppArmor,是一个Linux系统安全应用程序,类似于Selinux,AppArmor默认安全策略定义个别应用程序可以访问系统资源和各自的特权,如果不设置服务的执行程序,即使你改了属主属组并0777权限,也是对服务起不到作用。
ok,apt安装下MySQL默认数据目录是/var/lib/mysql,其它的目录权限都不可。开始修改:
# vim /etc/apparmor.d/usr.sbin.mysqld
找到:
# Allow data dir access
/var/lib/mysql/ r,
/var/lib/mysql/** rwk,
修改为:
# Allow data dir access
/lvmdata/data/ r,
/lvmdata/data/** rwk,
重启apparmor服务:
# service apparmor restart
再初始化MySQL:
root@ubuntu:/lvmdata/data# mysqld --initialize --user=mysql --datadir=/lvmdata/data
成功:
root@ubuntu:/lvmdata/data# ls
auto.cnf ibdata1 ib_logfile1 mysql sys
ib_buffer_pool ib_logfile0 ibtmp1 performance_schema
启动服务,登录:
root@ubuntu:/lvmdata/data# service mysql start
root@ubuntu:/lvmdata/data# mysql -uroot -p
Enter password:
ERROR 1045 (28000): Access denied for user 'root'@'localhost' (using password: YES)
root密码没了。。。
对于Mysql 5.7.6以后的5.7系列版本,Mysql使用mysqld --initialize或mysqld --initialize-insecure命令来初始化数据库,后者可以不生成随机密码。但是安装Mysql时默认使用的是前一个命令,这个命令也会生成一个随机密码。改密码保存在了Mysql的日志文件中。
查找MySQL日志:
root@ubuntu:/var/log/mysql# tail /var/log/mysql/error.log
2018-01-07T09:43:31.587130Z 0 [Warning] InnoDB: Creating foreign key constraint system tables.
2018-01-07T09:43:31.697297Z 0 [ERROR] Too many arguments (first extra is 'mysqld').
2018-01-07T09:43:31.697318Z 0 [ERROR] Aborting 2018-01-07T09:44:51.131747Z 0 [Warning] TIMESTAMP with implicit DEFAULT value is deprecated. Please use --explicit_defaults_for_timestamp server option (see documentation for more details).
2018-01-07T09:44:51.417055Z 0 [Warning] InnoDB: New log files created, LSN=45790
2018-01-07T09:44:51.518291Z 0 [Warning] InnoDB: Creating foreign key constraint system tables.
2018-01-07T09:44:51.597737Z 0 [Warning] No existing UUID has been found, so we assume that this is the first time that this server has been started. Generating a new UUID: 686d9f78-f38f-11e7-a027-000c2927e6cf.
2018-01-07T09:44:51.601893Z 0 [Warning] Gtid table is not ready to be used. Table 'mysql.gtid_executed' cannot be opened.
2018-01-07T09:44:51.603154Z 1 [Note] A temporary password is generated for root@localhost: Qs0K5tiIA7-K
最后一行,密码Qs0K5tiIA7-K,再登录成功并要求更改密码:
mysql> show databases;
ERROR 1820 (HY000): You must reset your password using ALTER USER statement before executing this statement.
更改:
mysql> SET PASSWORD = PASSWORD('yourpwd');
Query OK, 0 rows affected, 1 warning (0.00 sec)
mysql> show databases;
+--------------------+
| Database |
+--------------------+
| information_schema |
| mysql |
| performance_schema |
| sys |
+--------------------+
4 rows in set (0.00 sec)
圆满解决!
Ubuntu初始化MySQL碰到的坑的更多相关文章
- ubuntu安装mysql遇到的坑----解决Mysql报错缺少libaio.so.1
最近学习大数据,涉及到hive的部分需要安装mysql,于是就在linux环境下尝试安装,对于我这个linux小白来说,中间遇到很多坑爹问题,在这里做一个记录. 我参考的mysql安装博客: http ...
- ubuntu下MySQL安装配置及基本操作
在linux下安装方法: 分为四种:一: 直接用软件仓库自动安装(如:ubuntu下,sudo apt-get install mysql-server; Debain下用yum安装): 二:官网下载 ...
- 一步到位Linux中安装配置MySQL及补坑
Windows上安装MySQL也就不讲了,基本上一路点击下一步就可完成,现在讲讲Linux上布署Mysql,虽然也有很多网友列出了详细的步骤,可能是因为版本过老的问题导致即使按照上面一步步来也还是出现 ...
- Ubuntu 安装 Mysql 5.6 数据库
Ubuntu 安装 Mysql 5.6 数据库 1)下载: mysql-5.6.13-debian6.0-x86_64.deb http://dev.mysql.com/downloads/mirro ...
- 那些在BAE上部署node.js碰到的坑
在BAE上使用node.js半年多了,其中碰到了不少因为BAE云环境限制碰到的坑 写下来大家碰到了,也不用那么麻烦的去看好几天代码了,直接对症下药 官方公布的坑有: BAE是使用package.jso ...
- ubuntu安装mysql
好记性不如烂笔头,记录一下,ubuntu安装mysql的指令. 安装MySQL: sudo apt-get install mysql-server sudo apt-get install mysq ...
- Ubuntu的Mysql指南
安装MySQL sudo apt-get install mysql-server 这个应该很简单了,而且我觉得大家在安装方面也没什么太大问题,所以也就不多说了,下面我们来讲讲配置. 配置MySQL ...
- ubuntu下mysql添加用户的问题
在ubuntu下使用命令: $:sudo apt-get install mysql-server 命令安装的Mysql 版本为:Server version: 5.7.13-0ubuntu0.16. ...
- 安装初始化mysql后,默认几个库介绍
背景介绍: 当我们安装初始化mysql后,默认建了几个数据库,那么这些数据库有什么作用呢?mysql> show databases;+--------------------+| Datab ...
随机推荐
- RxAndroid中observable的基本使用和表单校验操作
RxAndroid 响应式编程 类似于监听-观察者模式 在观察者模式中,你的对象需要实现 RxJava 中的两个关键接口:Observable 和 Observer.当 Observable 的状态改 ...
- 》》豆瓣API
<!DOCTYPE html> <html> <head> <meta charset="utf-8" /> <title&g ...
- nginx防恶意域名解析
今天无意间查看访问日志发现一个fhxywh.com的域名居然解析到了我的服务器,也就是说通过这个域名也能访问我的博客,这个就是赤裸裸的恶意域名解析了. 这个危害非常大,不仅会影响用户,而且不利于SEO ...
- Gradle笔记——构建基础
本篇文章主要介绍一下Gradle的构建基础. 它看起来似乎和android项目没多大关系.不能让人一下子理解android项目中的Gradle配置文件,可是这篇基础真的非常重要. 学习Gradle前, ...
- 微信小程序的Web API接口设计及常见接口实现
微信小程序给我们提供了一个很好的开发平台,可以用于展现各种数据和实现丰富的功能,通过小程序的请求Web API 平台获取JSON数据后,可以在小程序界面上进行数据的动态展示.在数据的关键 一环中,我们 ...
- C#相关知识总结
字符串相关知识 判断某字符串中包含某个字符,并过滤 if (string.Contains("*")) string = string.Replace('*',' '); // ...
- python decorator 进阶
上一篇文章开始的时候提到 “一般来说,装饰器是一个函数,接受一个函数(或者类)作为参数,返回值也是也是一个函数(或者参数)” 有一般情况,就有特殊情况.第一种特殊情况:装饰器可能也是一个类:第二种特殊 ...
- 在Eclipse中创建Django项目
在以前的分享中,我们是在命令行模式下创建Django项目的,那么,如何在IDE中使用Django呢? 本文将介绍如何在Eclipse中创建Django项目. 首先,新建Django项目mysite,如 ...
- Lucene实现索引和查询
0引言 随着万维网的发展和大数据时代的到来,每天都有大量的数字化信息在生产.存储.传递和转化,如何从大量的信息中以一定的方式找到满足自己需求的信息,使之有序化并加以利用成为一大难题.全文检索技术是现如 ...
- Find the Maximum sum
Given an array of n elements.Find the maximum sum when the array elements will be arranged in such w ...