Centos 7 自定义路径安装 mysql - rpm包自定义路径安装mysql - 测试记录

序言

就目前而言,笔者觉得rpm包是挺方便的,不过如果想要自定义安装路径,说实话,笔者都不知道怎么改,看网上的都是 tar 包安装,然后更改各种路径,就可以的样子。


rpm 包是笔者的测试过程记录,bug多

rpm包 自定义Mysql安装路径

这里就不介绍安装 rpm 包安装 mysql 的方法,自行查看如下rpm包安装mysql 教程链接:
Centos + Django + Nginx + uwsgi 部署项目-rpm包安装 Mysql 5.x 服务器-删除 Mysql 服务器-自定义安装mysql-utf8编码问题(3)


这里第一次安装mysql容易出现报错:

ERROR 1045 (28000): Access denied for user 'root'@'localhost' (using passwor

解决方法如下:

1. 修改mysql的初始密码(有两种方法)

1.1 第 1 种方法 (不推荐,无聊时弄出来的)

MySQL第一次启动后会创建超级管理员账号 root@localhost,初始密码存储在日志文件中:/var/log/mysqld.log

查看 Mysql 服务器初始密码的命令如下:

grep 'temporary password' /var/log/mysqld.log

通常而言,界面显示的 A temporary password is generated for root@localhost: 后面就是 Mysql 服务器的初始密码

[root@localhost ~]# mysql -uroot -p
Enter password: 输入 Mysql 初始密码

进入 Mysql 服务器命令终端,输入命令如下:

mysql> ALTER USER  'root'@'localhost' IDENTIFIED BY 'password';
ERROR 1819 (HY000): Your password does not satisfy the current policy requirements 
#密码太弱

如果密码太弱了,就会报错 ERROR 1819 (HY000): Your password does not satisfy the current policy requirements

或者是

ERROR 1820 (HY000): You must reset your password using ALTER USER statement before executing this statement.

1.1.1 Mysql 初次修改密码,因密码太弱报错的多种解决方法如下:

  1. 使用复杂密码,Mysql 数据库默认的密码策略是要包含数字、字母及特殊字符;
  2. 如果只是测试用,不想用那么复杂的密码,可以修改默认策略,即validate_password_policy(以及validate_password_length等相关参数),使其支持简单密码的设定,具体方法可以参考:如何修改 Mysql 的密码策略:传送门

进入 Mysql 服务器 mysql> 使用查看 Mysql 密码策略命令:

 mysql> SHOW VARIABLES LIKE 'validate_password%'; 

修改 Mysql 密码策略安全等级命令:

 mysql> set global validate_password_policy=LOW;

设置限制 Mysql 密码长度为 6 个字符(当然这个长度可以自己选择,但是只有配置了密码策略为 LOW 才可以,仅仅只检查密码长度)

 mysql> set global validate_password_length=6;
  1. 修改默认安装 Mysql 的配置文件/etc/my.cnf(配置文件默认是该路径下),添加validate_password=OFF,保存并重启 MySQL 服务器

1.2 第 2 种方法 (推荐)

在mysql 的配置文件 /etc/my.cnf 里面[mysqld]下面加入如下内容:

[mysqld]

skip-grant-tables

然后就可以不用输入密码,就能登录mysql

mysql -uroot -p

输入命令,直接回车就能进入了!

mysql>

use mysql;

mysql>

update user set authentication_string=password('新密码') where user='root';

刷新权限

mysql>

flush privileges;

退出mysql

mysql>

quit

或者
mysql>

exit

在这里可能会想到,我为 root 用户设置了mysql密码,那么我之前在/etc/my.cnf 内配置的 skip-grant-tables 还有没有作用呢?答案是没有了,优先级是看该用户是否设置了密码,不过初始密码不是已经为 root 设置了密码吗?看来这又是一个挠人的问题!
之后重新启动 mysql 服务器

service mysqld restart

先不要把 skip-grant-tables 给删了,先保留一下,后面不要了再删,不然下面使用命令 mysqladmin -uroot -p shutdown 会报如下错误:

mysqladmin: connect to server at 'localhost' failed
error: 'Your password has expired. To log in you must change it using a client that supports expired passwords.'

还有最后不要了记得删掉这个skip-grant-tables配置,否则会有如下问题出现:

mysql设置validate_password=off后添加skip-grant-tables服务启动失败

2. 关闭 mysqladmin

mysql, mysqladmin, mysqld之间的区别: 传送门

把MySQL服务进程停掉,bash终端命令如下:

mysqladmin -u root -p shutdown

相关介绍:

MySQL安装完成后不象SQL Server默认安装在一个目录,它的数据库文件、配置文件和命令文件分别在不同的目录,了解这些目录非常重要,尤其对于Linux的初学者,因为 Linux本身的目录结构就比较复杂,如果搞不清楚MySQL的安装目录那就无从谈起深入学习。下面就介绍一下这几个目录。

1)、数据库目录
/var/lib/mysql/
2)、配置文件
/usr/share/mysql(mysql.server命令及配置文件)
3)、相关命令
/usr/bin (mysqladmin mysqldump等命令)
4)、启动脚本
/etc/rc.d/init.d/ (启动脚本文件mysql的目录)

3. 更改MySQL目录

MySQL默认的数据文件存储目录为/var/lib/mysql。假如要把目录移到/home/work/data/home/work/data 只是举例,请自行更改为自己指定的自定义目录)下需要进行下面几步:

3.1 创建自定义路径目录(自定义目录位置请自行更改)

mkdir -p /home/work/data/{data,log,tmp}

3.2 移动 mysql 到自定义目录

mv /var/lib/mysql /home/work/data

这样就把MySQL的数据文件移动到了/home/work/data/mysql

3.3 找到 my.cnf 配置文件

如果/etc/目录下没有my.cnf配置文件,请到/usr/share/mysql/下找到*.cnf文件,拷贝其中一个到/etc/并改名为my.cnf)中。命令如下:
[root@test1 mysql]# cp /usr/share/mysql/my-medium.cnf /etc/my.cnf

3.4 编辑MySQL的配置文件/etc/my.cnf

为保证MySQL能够正常工作,需要指明 mysql.sock 文件的产生位置。 修改socket=/var/lib/mysql/mysql.sock一行内,等号右边的值
为:/home/work/data/mysql/tmp/mysql.sock 。操作如下:(放在了 tmp/ 文件夹内)

[mysqld]

socket=/home/work/data/mysql/tmp/mysql.sock

查看是否存在 mysql 用户,及其所属的用户组

id mysql

确保mysql下的文件属主都为mysql(下面的命令是在mysql目录下执行的)

 chown -R root.root /home/work/env/data/mysql/./
 chown -R mysql.mysql /home/work/env/data/mysql/data
 chown -R mysql.mysql /home/work/env/data/mysql/tmp
 chown -R mysql.mysql /home/work/env/data/mysql/logs