
此文档用于记录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
    如需转载请注明文章作者和出处。谢谢!