centos7+ 安装mysql

CentOS7安装MySQL

在CentOS中默认安装有MariaDB,这个是MySQL的分支,但为了需要,还是要在系统中安装MySQL,而且安装完成之后可以直接覆盖掉MariaDB。

1 下载并安装MySQL官方的 Yum Repository

1
[root@localhost ~]# wget -i -c http://dev.mysql.com/get/mysql57-community-release-el7-10.noarch.rpm

使用上面的命令就直接下载了安装用的Yum Repository,大概25KB的样子,然后就可以直接yum安装了。

1
[root@localhost ~]# yum -y install mysql57-community-release-el7-10.noarch.rpm

之后就开始安装MySQL服务器。

1
[root@localhost ~]# yum -y install mysql-community-server

这步可能会花些时间,安装完成后就会覆盖掉之前的mariadb。

img

至此MySQL就安装完成了,然后是对MySQL的一些设置。

2 MySQL数据库设置

首先启动MySQL

1
[root@localhost ~]# systemctl start mysqld.service

查看MySQL运行状态,运行状态如图:

1
[root@localhost ~]# systemctl status mysqld.service

img

此时MySQL已经开始正常运行,不过要想进入MySQL还得先找出此时root用户的密码,通过如下命令可以在日志文件中找出密码:

1
[root@localhost ~]# grep "password" /var/log/mysqld.log

用该密码登录到服务端后,必须马上修改密码,不然会报如下错误:

1
2
mysql> select user();
ERROR 1820 (HY000): You must reset your password using ALTER USER statement before executing this statement.

如果只是修改为一个简单的密码,会报以下错误:

1
2
mysql> ALTER USER USER() IDENTIFIED BY '12345678';
ERROR 1819 (HY000): Your password does not satisfy the current policy requirements

这个其实与validate_password_policy的值有关。

validate_password_policy有以下取值:

Policy Tests Performed
0 or LOW Length
1 or MEDIUM Length; numeric, lowercase/uppercase, and special characters
2 or STRONG Length; numeric, lowercase/uppercase, and special characters; dictionary file

默认是1,即MEDIUM,所以刚开始设置的密码必须符合长度,且必须含有数字,小写或大写字母,特殊字符。

有时候,只是为了自己测试,不想密码设置得那么复杂,譬如说,我只想设置root的密码为123456。

必须修改两个全局参数:

首先,修改validate_password_policy参数的值

1
2
mysql> set global validate_password_policy=0;
Query OK, 0 rows affected (0.00 sec)

密码的长度是由validate_password_length决定的,而validate_password_length的计算公式是:

1
validate_password_length = validate_password_number_count + validate_password_special_char_count + (2 * validate_password_mixed_case_count)

我的是已经修改过的,初始情况下第一个的值是ON,validate_password_length是8。可以通过如下命令修改:

1
2
mysql> set global validate_password_policy=0;
mysql> set global validate_password_length=1;

但此时还有一个问题,就是因为安装了Yum Repository,以后每次yum操作都会自动更新,需要把这个卸载掉:

1
[root@localhost ~]# yum -y remove mysql57-community-release-el7-10.noarch
1
定时备份mysql
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
#!/bin/bash
db_user="root"
db_passwd="123456"
db_name="test_db"
#进入备份目录将之前的移动到old目录
cd /mnt/backup/bakmysql
echo "you are in bakmysql directory now"
mv test_db* /mnt/backup/bakmysqlold
echo "Old databases are moved to bakmysqlold folder"
#备份目录
backup_dir="/mnt/backup/bakmysql"
#时间格式
time=$(date +"%Y-%m-%d")
#mysql 备份的命令,注意有空格和没有空格
mysqldump -u$db_user -p$db_passwd $db_name > "$backup_dir/$db_name"-"$time.sql"
echo "your database backup successfully completed"
#这里将7天之前的备份文件删掉
SevenDays=$(date -d -7day +"%Y-%m-%d")
if [ -f /mnt/backup/bakmysqlold/pashanhu-$SevenDays.sql ]
then
rm -rf /mnt/backup/bakmysqlold/pashanhu-$SevenDays.sql
echo "you have delete 7days ago bak sql file "
else
echo "7days ago bak sql file not exist "
echo "bash complete"
fi
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
er="root"
db_passwd="12345678"
db_name="test"
#进入备份目录将之前的移动到old目录
cd /var/backup/bakmysql
echo "you are in bakmysql directory now"
mv test_db* /var/backup/bakmysqlold
echo "Old databases are moved to bakmysqlold folder"
#备份目录
backup_dir="/mnt/backup/bakmysql"
#时间格式
time=$(date +"%Y-%m-%d")
#mysql 备份的命令,注意有空格和没有空格
#mysqldump -u$db_user -p$db_passwd $db_name > "$backup_dir/$db_name"-"$time.sql"
mysqldump --defaults-extra-file=/etc/my.cnf $db_name > "$backup_dir/$db_name"-"$time.sql"
echo "your database backup successfully completed"
echo "$backup_dir/$db_name"-"$time.sql"
#这里将7天之前的备份文件删掉
SevenDays=$(date -d -7day +"%Y-%m-%d")
if [ -f /var/backup/bakmysqlold/pashanhu-$SevenDays.sql ]
then
rm -rf /var/backup/bakmysqlold/pashanhu-$SevenDays.sql
echo "you have delete 7days ago bak sql file "
else
echo "7days ago bak sql file not exist "
echo "bash complete"
fi

然后通过下面命令将脚步加入系统的计划任务

1
2
3
4
5
crontab -e
0 2 * * * cd /usr/sbin/ && ./bakmysql.sh

解决MySQL5.6出现”Using a password on the command line interface…”

​ 转载 2016年09月07日 11:17:25

今天老左有在帮一个网友搬家网站过程中,习惯导出MySQL数据库的时候采用mysqldump命令,但是意外发生了出现”Warning: Using a password on the command line interface can be insecure.”的错误提示,当然数据库肯定也没有能备份下来。这个问题应该是在MySQL5.6+版本的时候就有出现,可能是为了确保数据库的安全性采用的保护机制。

遇到问题那就去解决问题,大概搜索到国内的一些网站,大部分都是复制的,也没有讲的明白,于是还是找老外的信息,于是老左就整理到下面比较全的方法且经过验证是没有问题的。

第一种方法、修改数据库配置文件

1、我们需要修改数据库配置文件,这个要看我们数据库的配置的,有些是在/etc/my.cnf,有些是/etc/my.conf

Warning: Using a password on the command line interface can be insecure.

我们需要在[client]部分添加脚本:

host=localhost
user=数据库用户
password=’数据库密码’

这里参数要修改成我们自己的。

2、采用命令导出和导入数据库

其实在这个时候,我们如果采用”详解使用mysqldump命令备份还原MySQL数据用法整理“介绍的方法也是可以使用的,虽然依旧有错误提示,但是数据库还是可以导出的。您肯定和老左一样是追求细节的人,一点点问题都不能有,但我们可以用下面的命令导出和导入,就没有错误提示。

#导出数据库

mysqldump –defaults-extra-file=/etc/my.cnf database > database.sql

#导入数据库

mysql –defaults-extra-file=/etc/my.cnf database < database.sql

这里我们可以看到上面的命令和以前常用的快速导入和导入命令有所不同了,需要加载我们配置的MYSQL配置文件,这个红色部分要根据我们实际的路径修改。用这样的命令导出备份和导入是没有错误提示的。

第二种方法、利用mysql_config_editor

1、设置加密模式

mysql_config_editor set –login-path=local –host=localhost –user=db_user –password

红色部分是需要修改成我们自己数据库用户名的,回车之后会提示我们输入数据库密码,我们照样输入。

2、执行备份

mysqldump -u db_user -pInsecurePassword my_database | gzip > backup.tar.gz

根据我们数据信息修改用户和用户名和数据库密码,执行备份,这里老左测试还是有错误提示,但数据库是可以备份的。

总之,我们只要实现结果,可以选择以上2种方法其一操作,当然老左也有看到其他的方法,这里就不多分享了,如果有兴趣的可以搜索其他解决方法。