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 初次修改密码,因密码太弱报错的多种解决方法如下:
- 使用复杂密码,Mysql 数据库默认的密码策略是要包含数字、字母及特殊字符;
- 如果只是测试用,不想用那么复杂的密码,可以修改默认策略,即
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;
- 修改默认安装 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