导语:mysql是世界上最流行的关系型数据库管理系统,由瑞典MySQL AB公司开发,目前属于Oracle公司所有。今天我将记录一下如何在Linux centos7系统上安装和配置MySQL。
# 目录
- 环境准备
- 安装包
- 基本设置
- 语法操作
# 环境准备
- linux centos7操作系统
- ssh软件
- MySQL官网 (opens new window)
# 安装包
- 第一步
进入下载文件夹,就是你要存放安装包的文件夹。
cd /home/downloads
1
- 第二步
下载安装包,并且用rpm添加MySQL程序包。
wget https://dev.mysql.com/get/mysql80-community-release-el7-1.noarch.rpm
rpm -ivh mysql80-community-release-el7-1.noarch.rpm
1
2
2
- 第三步
安装包。
yum install -y mysql-community-server
1
# 基本设置
- 启动并开机自启动MySQL程序
systemctl start mysqld
systemctl enable mysqld
1
2
2
- 查看版本信息
mysql -V
1
- 修改密码
//查看临时密码
grep "A temporary password" /var/log/mysqld.log
//进入mysql
mysql -u root -p
//修改密码
ALTER USER 'root'@'localhost' IDENTIFIED BY 'MYsql123.';
1
2
3
4
5
6
7
8
2
3
4
5
6
7
8
- 添加防火墙端口
MySQL默认的端口是3306,所有在防火墙中添加一个永久的端口。
firewall-cmd --add-port=3306/tcp --permanent
firewall-cmd --reload
1
2
2
# 语法操作
MySQL的一些语法操作基本上是增删查改不离手,分为数据库操作、数据表操作、用户操作、权限管理等,这次介绍一些查用的操作命令。
想要获取更多内容,请访问MySQL的官方文档。
- 数据库操作
//添加数据库
mysql> CREATE DATABASE mydb;
//查看数据库
mysql> SHOW DATABASES;
//使用数据库
mysql> USE <database name>;
1
2
3
4
5
6
2
3
4
5
6
- 数据表操作
//查看数据表
mysql> SHOW TABLES;
//创建数据表
mysql> CREATE TABLE pet (name VARCHAR(20), owner VARCHAR(20),
species VARCHAR(20), sex CHAR(1), birth DATE, death DATE);
1
2
3
4
5
2
3
4
5
- 用户操作
//新建本地用户
mysql> CREATE USER 'test'@'localhost' IDENTIFIED BY '123456';
//新建远程用户
mysql> CREATE USER 'test'@'%' IDENTIFIED BY '123456';
//赋予指定账户指定数据库远程访问权限
mysql> GRANT ALL PRIVILEGES ON mydb.* TO 'test'@'%';
//赋予指定账户对所有数据库远程访问权限
mysql> GRANT ALL PRIVILEGES ON *.* TO 'test'@'%';
//赋予指定账户对所有数据库本地访问权限
mysql> GRANT ALL PRIVILEGES ON *.* TO 'test'@'localhost';
//刷新权限
mysql> FLUSH PRIVILEGES;
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
- 权限管理
//查看权限
SHOW GRANTS FOR 'test'@'%';
//赋予权限
GRANT ALL PRIVILEGES ON *.* TO 'test'@'%';
//收回权限
REVOKE ALL PRIVILEGES ON *.* FROM 'test'@'%';
//刷新权限
FLUSH PRIVILEGES;
//删除用户
DROP USER 'test'@'localhost';
1
2
3
4
5
6
7
8
9
10
11
12
13
14
2
3
4
5
6
7
8
9
10
11
12
13
14
# 常见问题
- 打开phpadmin无法登录
因为MySQL8使用了更高级的方法,phpmyadmin不支持,所以需要使用以下语法来重置登录密码。
CREATE USER '<你的用户名>' IDENTIFIED WITH 'mysql_native_password' BY '<你的密码>';
GRANT ALL PRIVILEGES ON *.* TO 'test'@'%';
FLUSH PRIVILEGES;
1
2
3
2
3
- 忘记root密码
有时候我们容易忘记mysql的用户名密码,可以使用以下方法修改密码。
# 进入配置文件忽略密码登录
vi /etc/my.cnf
# 添加内容
skip-grant-table
# 重启mysql
systemctl restart mysqld
# 免密登录
mysql -u root -p
# 选择数据库
use mysql
# 更新为空
update user set authentication_string='' where user='root';
# 退出
\quit
# 或者
\q
# 删除skip-grant-table保存文件
vi /etc/my.cnf
# 重启mysql
systemctl restart mysqld
# 免密登录
mysql -u root -p
# 修改密码
ALTER USER 'root'@'localhost' IDENTIFIED BY '123456@1111....'; # 提示:有时候密码弱也会报错,退出重新登录就可以进去了。
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
- 内存占用过大
编辑配置文件my.cnf
innodb_buffer_pool_size=576M ->256M InnoDB引擎缓冲区占了大头,首要就是拿它开刀
query_cache_size=100M ->16M 查询缓存
tmp_table_size=102M ->64M 临时表大小
key_buffer_size=256m ->32M
1
2
3
4
2
3
4