安装前检查
先检查是否已安装过
rpm -qa | grep -i mysql
- 如果安装过,需删除之前的版本(谨慎操作,先确定是否可以删除)
以下是我之前安装的版本,可能和你的不一定一样,如果有的话,就rpm -e 命令移除即可。
rpm -e mysql-community-common-5.7.34-1.el7.x86_64
rpm -e mysql-community-server-5.7.34-1.el7.x86_64
rpm -e mysql-community-libs-5.7.34-1.el7.x86_64
rpm -e mysql-community-libs-compat-5.7.34-1.el7.x86_64
rpm -e mysql57-community-release-el7-11.noarch
rpm -e mysql-community-client-5.7.34-1.el7.x86_64
删除安装目录
#查找 mysql 相关目录
find / -name mysql
whereis mysql
#删除目录
rm -rfv /xx/xx
#删除配置文件
rm -rfv /etc/my.cnf
rm -rf /root/.mysql_sercret
开始安装
下载安装包,如果没有安装wget,请安装,步骤略
wget https://dev.mysql.com/get/mysql57-community-release-el7-11.noarch.rpm
安装MySQL源
yum -y localinstall mysql57-community-release-el7-11.noarch.rpm
安装MySQL(时间略长,取决于网速及硬件配置)
yum -y install mysql-community-server
启动mysql 服务
systemctl start mysqld
设置开机启动
systemctl enable mysqld && systemctl daemon-reload
获取数据库临时密码
grep 'A temporary password' /var/log/mysqld.log | tail -1
登录MySQL
输入刚才copy的密码:rf4m_jGq7plk
mysql -u root -p
设置密码策略
SET GLOBAL validate_password_policy=LOW;
修改密码
“Xxx123123”是你的密码
ALTER USER 'root'@'localhost' IDENTIFIED BY 'Xxx123123';
设置远程访问
远程连接可以设置root账号,也可以单独创建一个账号,专门用于远程管理,毕竟root账号的权限过大,一旦密码泄漏严重影响数据库安全。
# 登录MySQL
[root@localhost ~]# mysql -u root -p
# 进入mysql库
mysql> use mysql;
# 更新域属性,'%'表示允许任何主机访问
mysql> update user set host="%" where user ="root";
# 全局特权所有数据库
mysql> grant all privileges on *.* to 'root'@'%' with grant option;
# 生效配置
mysql> FLUSH PRIVILEGES;
刷新权限
FLUSH PRIVILEGES;
修改数据库存放位置
数据库存放在系统盘始终是不安全的,所以一般我们会配置一个数据盘,用于单独存放数据库文件,在前面的【系统通用配置】中,我们已经挂载了磁盘/dev/sdb至/data,这个就是专用用于数据库数据存储的,详细MySQL修改方法如下:
# 创建数据库存放目录
mkdir /data/mysql
# 配置权限
chown -vR mysql:mysql /data/mysql/
chmod -vR 700 /data/mysql/
# 停止数据库服务
systemctl stop mysqld
# 复制原数据库至新目录
cp -av /var/lib/mysql/* /data/mysql/
# 修改/etc/my.cnf配置,如下所示:
[root@localhost ~]# cat /etc/my.cnf | grep -v "^#" | grep -v "^$"
[mysqld]
datadir=/data/mysql
socket=/data/mysql/mysql.sock
symbolic-links=0
log-error=/var/log/mysqld.log
pid-file=/var/run/mysqld/mysqld.pid
#Mysql区分大小写(大小写敏感)配置
lower_case_table_names=1
[client]
port=3306
socket=/data/mysql/mysql.sock
[mysqld_safe]
socket=/data/mysql/mysql.sock
nice=0
# 启动数据库服务
systemctl start mysqld && systemctl status mysqld
# 确保数据库启动成功以后,我们就可以删除不再需要的原数据库文件了
rm -rf /var/lib/mysql
MySQL基础操作
这里简单说一下单独创建用户,并允许远程连接,以及添加、删除用户&数据库的操作。
# 登录MySQL
[root@localhost ~]# mysql -u root -p
# 创建数据库
mysql> CREATE DATABASE test;
# 创建用户db_test并允许远程连接
mysql> CREATE USER 'db_test'@'%' IDENTIFIED BY 'password';
# 授权允许远程访问test数据库的所有表
mysql> GRANT ALL ON test.* TO 'db_test'@'%';
# 查询所有用户
mysql> SELECT DISTINCT CONCAT('User: ''',user,'''@''',host,''';') AS query FROM mysql.user;
+------------------------------------+
| query |
+------------------------------------+
| User: 'db_test'@'%'; |
| User: 'mysql.session'@'localhost'; |
| User: 'mysql.sys'@'localhost'; |
| User: 'root'@'localhost'; |
+------------------------------------+
6 rows in set (0.01 sec)
# 查询数据库
mysql> show databases;
+-----------------------+
| Database |
+-----------------------+
| information_schema |
| mysql |
| performance_schema |
| sys |
| test |
+-----------------------+
6 rows in set (0.00 sec)
# 删除数据库
mysql> drop database test;
Query OK, 0 rows affected (0.00 sec)
# 更新指定用户密码
mysql> UPDATE user SET authentication_string=PASSWORD('密码') WHERE User='db_test' and Host='%';
Query OK, 0 rows affected, 1 warning (0.00 sec)
Rows matched: 1 Changed: 0 Warnings: 1
# 删除用户
mysql> drop user 'db_test'@'%';
Query OK, 0 rows affected (0.00 sec)
# 生效配置
mysql> flush privileges;
Query OK, 0 rows affected (0.00 sec)
# 退出数据库
mysql> exit
MySQL 常用命令
# 查看数据存储目录
show global variables like "%datadir%";
#创建数据库
create database db_name;
#显示所有的数据库
show databases;
#删除数据库
drop database db_name;
#选择数据库
use db_name;
create table tb_name (字段名 varchar(20), 字段名 char(1));
#创建数据表模板
#显示数据表
mysql> show tables;
#显示表结构
mysql> desc tb_name;
#删除表
mysql> drop table tb_name;