
此文档用于记录centos7安装mysql5.7的过程
清理环境
1
2
3
4
5
|
# centos7会自带mariadb
$ rpm -qa |grep -i mariadb
mariadb-libs-5.5.65-1.el7.x86_64
# 卸载mariadb
$ yum remove mariadb-libs-5.5.56-2.el7.x86_64
|
安装mysql源
1
2
3
4
5
6
|
# 下载源
$ wget https://dev.mysql.com/get/mysql57-community-release-el7-11.noarch.rpm
# 安装
$ yum localinstall mysql57-community-release-el7-11.noarch.rpm
# 检查是否安装成功
$ yum repolist enabled | grep "mysql.*-community.*"
|
安装配置mysql
安装mysql
1
2
3
4
5
6
7
8
|
# 安装
$ yum install -y mysql-community-server
# 启动
$ systemctl start mysqld
# 查看服务状态
$ systemctl status mysqld.service
# 设置开机启动
$ systemctl enable mysqld
|
登录修改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
|
# 由于MySQL从5.7开始不允许首次安装后使用空密码进行登录!为了加强安全性,系统会随机生成一个密码以供管理员首次登录使用,这个密码记录在/var/log/mysqld.log文件中。
$ grep 'temporary password' /var/log/mysqld.log #最后冒号后面的就是临时密码
... [Note] A temporary password is generated for root@localhost: 82PmN)QNj3jy
$ mysql -uroot -p
# 登录后需要修改密码,执行下列两个SQL之一就可以
$mysql> set password=password("123456");
ERROR 1819 (HY000): Your password does not satisfy the current policy requirements
$mysql> alter user 'root'@'localhost' identified by '123456';
ERROR 1819 (HY000): Your password does not satisfy the current policy requirements
# 但是发现上面随意一个修改密码的SQL都有报错。注意:mysql 5.7 默认安装了密码安全检查插件(validate_password),默认密码检查策略要求密码必须包含:大小写字母、数字和特殊符号,并且长度不能少于8位,如果不想设置的那么复杂的话 必须修改两个全局参数
# 查看密码策略
$mysql> show variables like '%password%';
# 设置参数
$mysql> set global validate_password_policy=0;
Query OK, 0 rows affected (0.00 sec)
$mysql> set global validate_password_length=1;
Query OK, 0 rows affected (0.00 sec)
# 再进行修改密码
$mysql> alter user 'root'@'localhost' identified by '123456';
Query OK, 0 rows affected (0.00 sec)
$mysql> flush privileges;
Query OK, 0 rows affected (0.01 sec)
|
设置远程登录
1
2
|
$mysql> GRANT ALL PRIVILEGES ON *.* TO 'dylan'@'%' IDENTIFIED BY '123456' WITH GRANT OPTION;
$flush privileges;
|
1
2
3
|
$mysql> use mysql;
$mysql> UPDATE user SET Host='%' WHERE User='root';
$mysql> flush privileges;
|
设置默认编码为utf8
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
30
31
32
33
34
35
36
37
38
39
40
|
#查看默认编码
$mysql> show variables like "%character%";show variables like "%collation%";
#修改编码,修改mysql5.7的编码由latin1为utf8
$ vim /etc/my.cnf
.......
[mysqld]
character-set-server=utf8 #注意这个不能写成default-character-set=utf8,否则会导致5.7版本mysql无法打开
[client]
default-character-set=utf8
[mysql]
default-character-set=utf8
......
# 重启mysql服务
$ systemctl restart mysqld.service
# 登录查看
$ mysql -uroot -p
$mysql> show variables like "%character%";show variables like "%collation%";
+--------------------------+----------------------------+
| Variable_name | Value |
+--------------------------+----------------------------+
| character_set_client | utf8 |
| character_set_connection | utf8 |
| character_set_database | utf8 |
| character_set_filesystem | binary |
| character_set_results | utf8 |
| character_set_server | utf8 |
| character_set_system | utf8 |
| character_sets_dir | /usr/share/mysql/charsets/ |
+--------------------------+----------------------------+
8 rows in set (0.01 sec)
+----------------------+-----------------+
| Variable_name | Value |
+----------------------+-----------------+
| collation_connection | utf8_general_ci |
| collation_database | utf8_general_ci |
| collation_server | utf8_general_ci |
+----------------------+-----------------+
3 rows in set (0.00 sec)
|
修改mysql存储目录
1
2
|
#查看数据存储路径 默认是/var/lib/mysql/
$mysql>show variables like '%dir%';
|
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
|
# 停止mysql服务
$ systemctl stop mysqld
# 创建新的存储目录
$ mkdir /home/data
# 迁移数据
$ cp -R /var/lib/mysql /home/data/mysql
# 修改数据库目录权限
$ chown mysql:mysql -R /home/data/mysql/
# 修改配置文件
$ vim /etc/my.cnf
......
[mysqld]
#datadir=/var/lib/mysql #注释掉原来的这行
#socket=/var/lib/mysql/mysql.sock #注释掉原来的这行
datadir=/home/data/mysql #新增这两行
socket=/home/data/mysql/mysql.sock
[client]
socket=/home/data/mysql/mysql.sock #这行需要加 不然本地登录时会提示ERROR 2002 (HY000): '/var/lib/mysql/mysql.sock' (2)
[mysql]
socket=/home/data/mysql/mysql.sock #这行需要加 不然本地登录时会提示ERROR 2002 (HY000): '/var/lib/mysql/mysql.sock' (2)
#启动mysql服务
$ systemctl start mysqld
|
默认配置文件路径
配置文件:/etc/my.cnf
日志文件:/var/log/mysqld.log
服务启动脚本:/usr/lib/systemd/system/mysqld.service
socket文件:/var/run/mysqld/mysqld.pid
参考链接
官方文档
https://www.yiibai.com/mysql/changing-password.html
https://www.jianshu.com/p/501cd46e942e
https://juejin.im/post/6844903926068674574#heading-0
https://blog.51cto.com/noodle/1727322
Author
dylan
LastMod
2021-09-18
License
如需转载请注明文章作者和出处。谢谢!