精简版CentOS7下安装配置mysql

953 阅读6分钟

CentOS7下安装配置mysql

一.卸载

安装之前需要先卸载,CentOS7精简版默认是有残留的MySQL,所以开始时要先卸载掉原来的MySQL。

1.卸载原有程序

yum remove mysql mysql-server mysql-libs compat-mysql51

2.查看残留的目录

whereis mysql #应该会输出 /usr/lib64/mysql

3.删除mysql目录

rm -rf /usr/lib64/mysql

4.删除其他文件

rm -rf /usr/my.cnf #有则删除
rm -rf /root/.mysql_sercret #有则删除
rm -rf /var/lib/mysql  #有则删除,存在的话需要删除,不然密码不会重新初始化

二.安装

1.安装mysql5.7

1 下载并安装MySQL官方的 Yum Repository
[root@localhost ~]# wget -i -c http://dev.mysql.com/get/mysql57-community-release-el7-10.noarch.rpm
  使用上面的命令就直接下载了安装用的Yum Repository,大概25KB的样子,然后就可以直接yum安装了。

[root@localhost ~]# yum -y install mysql57-community-release-el7-10.noarch.rpm
  之后就开始安装MySQL服务器。

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

1.添加MySQL Yum 仓库

从MySQL Yum 仓库dev.mysql.com/downloads/r…下载适合电脑版本的rpm包。 查看电脑版本

[root@localhost ~]# uname -a
Linux localhost.localdomain 3.10.0-693.el7.x86_64 #1 SMP Tue Aug 22 21:09:27 UTC 2017 x86_64 x86_64 x86_64 GNU/Linux

网站(dev.mysql.com/downloads/r…)上找到对应el7的版本

Red Hat Enterprise Linux 7 / Oracle Linux 7 (Architecture Independent), RPM Package		25.2K	
Download
(mysql80-community-release-el7-1.noarch.rpm)	MD5: 739dc44566d739c5d7b893de96ee6848

下载rpm文件(该文件非离线安装包)

格式:wget dev.mysql.com/get/ + mysql80-community-release-el7-1.noarch.rpm

wget https://dev.mysql.com/get/mysql80-community-release-el7-1.noarch.rpm

下载后执行(mysql80-community-release-el7-1.noarch.rpm是上一步下载的rpm包)

sudo rpm -Uvh mysql80-community-release-el7-1.noarch.rpm

2.安装mysql

sudo yum install mysql-community-server

一路输入y,网速快慢决定了这个步骤的快慢.

三.启动/关闭

重新配置参数文件my.cnf,在MySQL启动之前将参数lower_case_table_names设置为不区分大小写:

[root@localhost home]# vi /etc/my.cnf
# 在[mysqld]后新增一行:lower_case_table_names=1
[mysqld]
lower_case_table_names=1

sudo service mysqld start  #启动服务
[root@localhost home]# service mysqld start
Redirecting to /bin/systemctl start mysqld.service


sudo service mysqld status  #查看状态
[root@localhost home]# service mysqld status
Redirecting to /bin/systemctl status mysqld.service
● mysqld.service - MySQL Server
   Loaded: loaded (/usr/lib/systemd/system/mysqld.service; enabled; vendor preset: disabled)
   Active: active (running) since Fri 2018-09-14 16:42:31 CST; 7s ago
     Docs: man:mysqld(8)
           http://dev.mysql.com/doc/refman/en/using-systemd.html
  Process: 2591 ExecStartPre=/usr/bin/mysqld_pre_systemd (code=exited, status=0/SUCCESS)
 Main PID: 2659 (mysqld)
   Status: "SERVER_OPERATING"
   CGroup: /system.slice/mysqld.service
           └─2659 /usr/sbin/mysqld

Sep 14 16:42:12 localhost.localdomain systemd[1]: Starting MySQL Server...
Sep 14 16:42:31 localhost.localdomain systemd[1]: Started MySQL Server.


启动成功后, 本地超级用户root被创建,root用户的密码在日志文件中,使用下面的命令查看密码(找到temporary password)

cat /var/log/mysqld.log

[root@localhost home]# cat /var/log/mysqld.log
2018-09-14T08:42:13.302248Z 0 [System] [MY-013169] [Server] /usr/sbin/mysqld (mysqld 8.0.12) initializing of server in progress as process 2612
2018-09-14T08:42:21.039447Z 5 [Note] [MY-010454] [Server] A temporary password is generated for root@localhost: v9EU-<j9>+T>
2018-09-14T08:42:27.139278Z 0 [System] [MY-013170] [Server] /usr/sbin/mysqld (mysqld 8.0.12) initializing of server has completed
2018-09-14T08:42:30.782576Z 0 [System] [MY-010116] [Server] /usr/sbin/mysqld (mysqld 8.0.12) starting as process 2659
2018-09-14T08:42:31.549366Z 0 [Warning] [MY-010068] [Server] CA certificate ca.pem is self signed.
2018-09-14T08:42:31.613617Z 0 [System] [MY-010931] [Server] /usr/sbin/mysqld: ready for connections. Version: '8.0.12'  socket: '/var/lib/mysql/mysql.sock'  port: 3306  MySQL Community Server - GPL.


修改密码,密码需要8位且需要符合要求,如下例子

mysql -uroot -p

ALTER USER 'root'@'localhost' IDENTIFIED BY ‘新密码’; #注意标点符号, 新密码必须是8位及以上的数字、字母、特殊字符

#如下:
mysql -u root -p
然后在Enter password: 输入上一步查询到的密码:如: v9EU-<j9>+T>
ALTER USER 'root'@'localhost' IDENTIFIED BY 'Root1234!';

[root@localhost home]# mysql -u root -p
Enter password: 
Welcome to the MySQL monitor.  Commands end with ; or \g.
Your MySQL connection id is 8
Server version: 8.0.12

Copyright (c) 2000, 2018, Oracle and/or its affiliates. All rights reserved.

Oracle is a registered trademark of Oracle Corporation and/or its
affiliates. Other names may be trademarks of their respective
owners.

Type 'help;' or '\h' for help. Type '\c' to clear the current input statement.

mysql> ALTER USER 'root'@'localhost' IDENTIFIED BY 'root1234!';
ERROR 1819 (HY000): Your password does not satisfy the current policy requirements
mysql> ALTER USER 'root'@'localhost' IDENTIFIED BY 'Root1234!';
Query OK, 0 rows affected (0.15 sec)

四.修改配置

1.修改编码格式

show variables like '%character_set%' ##查看编码

mysql> show variables like '%character_set%';
+--------------------------+--------------------------------+
| Variable_name            | Value                          |
+--------------------------+--------------------------------+
| character_set_client     | utf8mb4                        |
| character_set_connection | utf8mb4                        |
| character_set_database   | utf8mb4                        |
| character_set_filesystem | binary                         |
| character_set_results    | utf8mb4                        |
| character_set_server     | utf8mb4                        |
| character_set_system     | utf8                           |
| character_sets_dir       | /usr/share/mysql-8.0/charsets/ |
+--------------------------+--------------------------------+
8 rows in set (0.01 sec)
mysql> 

2.修改

在[mysqld]之前添加 [client] default-character-set=utf8 在[mysqld]之后添加 character-set-server=utf8

vi /etc/my.cnf 

mysql> exit;
Bye
[root@localhost home]# vi /etc/my.cnf 

# For advice on how to change settings please see
# http://dev.mysql.com/doc/refman/8.0/en/server-configuration-defaults.html
[client]
default-character-set=utf8
[mysqld]
character-set-server=utf8

3.重启mysql服务

sudo systemctl restart mysqld.service

[root@localhost home]# sudo systemctl restart mysqld.service
[root@localhost home]# mysql -u root -p
Enter password: 
Welcome to the MySQL monitor.  Commands end with ; or \g.
Your MySQL connection id is 8
Server version: 8.0.12 MySQL Community Server - GPL

Copyright (c) 2000, 2018, Oracle and/or its affiliates. All rights reserved.

Oracle is a registered trademark of Oracle Corporation and/or its
affiliates. Other names may be trademarks of their respective
owners.

Type 'help;' or '\h' for help. Type '\c' to clear the current input statement.

mysql> show variables like '%character_set%';
+--------------------------+--------------------------------+
| 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-8.0/charsets/ |
+--------------------------+--------------------------------+
8 rows in set (0.01 sec)

mysql> 


4.创建用户并允许远程访问

[root@localhost home]# mysql -u root -p
Enter password: 

## Mysql8后密码要求比较严格,需要包含大小写字母、数字、特殊字符
## 1.创建用户
mysql> CREATE USER 'panda'@'%' IDENTIFIED BY 'Panda123!';
Query OK, 0 rows affected (0.06 sec)

## 2.授权 及允许远程访问
mysql> grant all on *.* to 'panda'@'%';
Query OK, 0 rows affected (0.05 sec)

## 3.MySql8.0 版本和 5.0 的加密规则不一样,而现在的可视化工具只支持旧的加密方式
##   需要将 MySQL 用户登录的加密规则修改为 mysql_native_password
mysql> ALTER USER 'panda'@'%' IDENTIFIED WITH mysql_native_password BY 'Panda123!';
...

## 4.查看修改后信息
mysql> select host, user, authentication_string, plugin from user;
+-----------+------------------+-------------------------------------+-----------------------+
| host      | user             | authentication_string               | plugin                |
+-----------+------------------+-------------------------------------+-----------------------+
| %         | panda             | DDDD...(手动修改过)

至此,可以通过客户端远程访问。

5.开放端口

如果4还不能访问需要关闭防火墙或者开发端口

//查看已开放的端口(默认不开放任何端口)
firewall-cmd --list-ports
//开启3306端口
firewall-cmd --zone=public --add-port=3306/tcp --permanent
//重启防火墙
firewall-cmd --reload
//再查看端口是否开通,如下说明端口开启了
[root@localhost rabbitmq]# firewall-cmd --list-ports
3306/tcp

6.修改表名忽略大小写

如果已经启动(初始化)了mysql服务。则需要先删除数据,配置之后重新初始化:

1.停掉运行的MySQL进程删除默认datadir下的文件,清空错误日志文件便于重启查看:

[root@localhost home]# systemctl stop mysqld
[root@localhost home]# rm -rf /var/lib/mysql/*
[root@localhost home]# echo '' > /var/log/mysqld.log

2.重启MySQL 查看临时密码 登录数据库:

[root@localhost ~]# systemctl start mysqld
[root@localhost ~]# cat /var/log/mysqld.log | grep -i password
2018-10-16T14:14:33.531160Z 5 [Note] [MY-010454] [Server] A temporary password is generated for root@localhost: WpmR>F1)HsP/
##使用上面的密码登录
[root@localhost ~]# mysql -p -S /var/lib/mysql/mysql.sock
Enter password: 

##其他的操作必须在修改root的密码之后
mysql> alter user root@'localhost' identified by 'Root$1234';
mysql> show variables like '%lower%';
+------------------------+-------+
| Variable_name          | Value |
+------------------------+-------+
| lower_case_file_system | OFF   |
| lower_case_table_names | 1     |
+------------------------+-------+
2 rows in set (0.02 sec)

mysql> flush privileges;
Query OK, 0 rows affected (0.01 sec)

看到 lower_case_table_names=1说明设置成功.