今天需要在linux安装个mysql用于测试,在网上找个教程便开始安装
前面的下载,解压,重命名文件夹,添加用户,用户组都不会有啥问题,我的mysql的解压安装路径是 /root/xxx/mysql,没有按照教程的解压安装路径。
groupadd mysql
useradd -r -g mysql mysql
然后按照教程修改 /etc/my.cnf
添加了
basedir=/usr/local/mysql
datadir=/usr/local/mysql/data
basedir=/usr/local/mysql
datadir=/usr/local/mysql/data
初始化mysql,在安装路劲mysql的目录下执行命令
./scripts/mysql_install_db --user=mysql --basedir=/usr/local/mysql --datadir=/usr/local/mysql/data
报错信息
FATAL ERROR: Could not find my-default.cnf
If you compiled from source, you need to run 'make install' to
copy the software into the correct location ready for operation.
If you are using a binary release, you must either be at the top
level of the extracted archive, or pass the --basedir option
pointing to that location.
看样子是没有指定配置文件,于是指定配置文件
./scripts/mysql_install_db --user=mysql --basedir=/usr/local/mysql --datadir=/usr/local/mysql/data --default-file=/etc/my.cnf
报错信息依旧。检查了一遍,没发现自己操作有啥问题,于是主观的认为是教程不对。于是删掉解压的文件夹,重新按照脚本之家的教程 https://www.jb51.net/article/159080.htm 操作
前面也是下载,解压,重命名文件夹,添加用户。我的mysql的安装路径是 /root/xxx/mysql,没有按照教程的 /opt
执行mysql的初始化命令
./scripts/mysql_install_db --user=mysql
报错信息
FATAL ERROR: Neither host 'iZj6c956trgtqzz1bahm2gZ' nor 'localhost' could be looked up with
/usr/local/mysql/bin/resolveip
Please configure the 'hostname' command to return a correct
hostname.
If you want to solve this at a later stage, restart this script
with the --force optio
我猜测是不是 /etc/hosts 没有配置好,于是将
::1 localhost localhost.localdomain localhost6 localhost6.localdomain6
改成了
127.0.0.1 localhost localhost.localdomain localhost6 localhost6.localdomain6
没有成功,于是根据报错信息搜索相关资料,操作及操作结果总结如下
1- /etc/hosts 的配置信息,将‘::1 ’ 改成 127.0.0.1。再执行./bin/resolveip localhost, 预期执行结果是 IP address of localhost is 127.0.0.1
修改后,在我的安装目录下执行./bin/resolveip localhost,然后重新执行上面的mysql初始化命令。没起效果。报错信息更原来一样
2- 将/usr/local/mysql/bin/resolveip 拷贝到 /usr/bin。 发现并没有这个文件
3- 说是在32位的平台上使用了64位的安装包。 这个可以肯定不是
因为以前安装都没遇到过这个问题,而且只是安装mysql并没有其他高级的设置,所以感觉肯定是哪里犯了的低级错误。
于是第二次删掉,再找个安装教程 https://www.cnblogs.com/bbdong/p/9579794.html
看到一行,突然让我意识到了错误
进入mysql安装/usr/local/mysql 目录执行数据库的 初始化脚本 并生成my.cnf文件 作用 :用于mysql自带的 数据库 和 表的初始化 。
我的安装路径是 /root/XXX/mysql,但是指定的 basedata目录是'/usr/local/mysql',且在 /etc/my.cnf中也配置了。在我第一次安装失败后,我删除了文件夹,但是没有修改/etc/my.cnf。所以第二次安装脚本之家的教程安装也是失败的。
此时我意识到basedata应该是安装目录,第二种解决方案将将/usr/local/mysql/bin/resolveip 拷贝到 /usr/bin。找不到resolveip也是是因为我的安装路径不在/usr/local/mysql上。在我实际的安装路径/root/xxx/mysql/bin下确实找到了 resolveip的命令。
于是修改了/etc/my.cnf 中的 basedir 为 我实际的安装路径 '/root/xxx/mysql'
重新按照脚本之家的教程。执行初始化
./scripts/mysql_install_db --user=mysql
报错信息
ERROR: 1 Can't create/write to file '/root/xxx/mysql/data/mysql/db.MYI' (Errcode: 13 - Permission denied)
2021-09-08 10:21:18 5446 [ERROR] Aborting
明显是权限问题,执行初始化的用户是 mysql,在我的安装目录下没有权限。于是将安装包解压到 /opt/下
初始化mysql,报错还是权限问题
ERROR: 1 Can't create/write to file '/root/XXX/mysql/data/mysql/db.MYI' (Errcode: 13 - Permission denied)
2021-09-08 10:22:51 5446 [ERROR] Aborting
......真是无语啊,还犯这个错误。 应该修改 /etc/my.cnf中的basedir为 实际安装路径。初始化时应该默认的配置文件是/etc/my.cnf。为了防止再犯,于是删除了第一次安装时/etc/my.cnf中的 修改内容datadir和basedir,log-error等
脚本之家的剩余安装步骤都正常执行。
本次浪费了2个多小时,原因是很低级的,没有去理解那些安装的参数。按照教程,但有没有完全按照教程(解压安装目录不一样)。引以为戒
basedir是指定安装目录,必须是你实际的安装目录,不然初始化会找不到相关的命令
datadir是mysql的数据目录
/etc/my.cnf是默认的配置文件,可以指定安装参数datadir和basedir等。可以被初始化命令的指定值覆盖。