Yum Install MySQL

一、安装 MySQL 的 yum 源

https://dev.mysql.com/downloads/repo/yum

# 安装源,会在 /etc/yum.repos.d/ 下生成 mysql-community.repo 和 mysql-community-source.repo 文件
sudo rpm -ivh https://dev.mysql.com/get/mysql80-community-release-el7-4.noarch.rpm

# 查看 yum 源中是否有 mysql 安装包
sudo yum repolist all | grep mysql

 

二、选择 MySQL 的版本并安装

# 安装管理工具
yum install -y yum-utils

# 禁用 mysql 8.0
yum-config-manager --disable mysql80-community
# 启用 mysql 5.7
yum-config-manager --enable mysql57-community

# 安装
yum install -y mysql-community-server

 

三、相关设置与启动

启动服务

# 开启服务
systemctl start mysqld.service

# 开机自启动
systemctl enable mysqld.service

# 检查 MySQL 服务器的状态
systemctl status mysqld.service

# 查看端口
netstat -ln | grep 3306

# 从日志文件中获取 root 账户初始密码
grep "password" /var/log/mysqld.log

初始化服务

# 直接用该密码登陆会要求改密码,最好先进行向导操作

# 安全向导
mysql_secure_installation

# 输入 root 初始密码,初始密码中有特殊字符时需转义
Enter password for user root:
# 设置新密码,密码太简单会提示错误:Your password does not satisfy the current policy requirements
New password
# 是否确认修改 root 密码
Change the password for root
# 是否删除匿名用户
Remove anonymous users
# 是否禁止 root 远程登录
Disallow root login remotely
# 是否删除 test 数据库
Remove test database and access to it
# 是否现在刷新权限
Reload privilege tables now

设置简单密码

官方 在新版本中对密码设置要求比较严格

-- 查看密码策略
SHOW VARIABLES LIKE 'validate_password%';

-- 修改密码策略,修改密码检查强度和密码长度就可以
-- 8.0 之前
set global validate_password_policy=0;
set global validate_password_length=4;
-- 8.0 之后
set global validate_password.policy=0;
set global validate_password.length=4;

-- 修改当前用户密码
ALTER USER USER() IDENTIFIED BY '123456';
-- 修改指定用户密码
ALTER user 'root'@'localhost' IDENTIFIED BY '123456';

忘记 root 密码情况下设置密码

# 编辑配置文件
vim /etc/my.cnf
# 文件最后添加免密登陆,MySQL 8 不可以
skip-grant-tables

# 重启 mysql 服务
systemctl restart mysqld.service
# 登陆 mysql,不用密码
mysql -uroot

清空密码

-- 清空指定账户密码
use mysql;
update user set authentication_string = '' where user = 'root';

-- 退出 mysql,删除免密登陆配置,重启 mysql 服务,用空密码登陆,然后进行修改密码操作

添加远程访问权限

首先开放本机 3306 端口或关闭防火墙

# iptables
# 开放端口
iptables -A INPUT -m state --state NEW -m tcp -p tcp --dport 3306 -j ACCEPT
# 保存配置
service iptables save

# firewalld
# 开放端口
firewall-cmd --zone=public --add-port=3306/tcp --permanent
# 重启 firewall
firewall-cmd --reload
# 查看已开放端口
firewall-cmd --list-ports

# 关闭防火墙
systemctl stop firewalld.service
# 关闭开机自启
systemctl disable firewalld.service

为已有用户添加远程访问权限

-- 选择 mysql 数据库
use mysql;

-- 修改指定用户登录位置,%为任意地址,可配置指定IP
update user set host = '%' where user = 'root';

-- 修改登陆密码和加密规则,8 版本默认的认证插件为 Caching_sha2_password,原来是 mysql_native_password,不修改 Navicat 等工具连接会认证失败
ALTER USER 'root'@'%' IDENTIFIED WITH mysql_native_password BY 'root';

-- 刷新权限
flush privileges;

创建新用户并添加远程访问权限

-- 创建用户(user1为用户名,%为登陆地址任意ip,也可指定,123456为登录密码)
CREATE USER 'user1'@'%' IDENTIFIED WITH mysql_native_password BY 'root';

-- 默认创建的用户是无权限,只能登录而已,(all:所有权限,有select,update等等权限,后面的*.*:指定数据库.指定表,这里指所有,to后面是用户)
grant all on *.* to 'user1'@'%';

-- 刷新权限
flush privileges;

查看登陆权限

use mysql;
select host,user from user;

 

四、配置(/etc/my.cnf)

Linux 上修改 /etc/my.cnf。windows 上 my.ini,一般会在安装目录的根目录。

Linux 用 rpm 包安装的 MySQL 没有 /etc/my.cnf 文件,默认用 /usr/share/mysql/my-medium.cnf,复制 /usr/share/mysql 目录下的 .cnf 文件到 /etc 目录,并改名为 my.cnf 即可。

注:linux 上修改 datadir 路径到其它磁盘后可能会出现服务启动失败的情况,这时关闭 selinux 即可。

[client]
default-character-set = utf8mb4

[mysql]
default-character-set = utf8mb4

[mysqld]
# 编码,https://juejin.cn/post/6930390275575513101
character-set-server = utf8mb4
# 排序规则
collation-server = utf8mb4_unicode_ci
# 关闭密码验证,可设置简单密码
validate_password = off
# 存储引擎
default-storage-engine = INNODB
# 免密登陆,8.0 不可用
skip-grant-tables
# 如果要设置属性为大小写不敏感,要在重启数据库实例之前就需要将原来的数据库和表转换为小写,否则将找不到数据库名
lower_case_table_names = 0
# 时区
default-time_zone = '+8:00'

 

五、常用命令

-- 查看版本
select version();

-- 查看日志文件位置
select @@log_error;

-- 查看数据文件位置
select @@datadir;

存储引擎

-- 查看储存引擎,Support列,YES表示支持,DEFAULT表示默认,NO表示不支持
show engines;
show variables like '%storage_engine%';

-- 设置储存引擎
SET default_storage_engine = InnoDB;

查看编码,修改编码(已创建的表或库)

-- 查看编码
SHOW VARIABLES LIKE '%character%';
-- 查看排序规则
SHOW VARIABLES LIKE 'collation%';

-- 设置编码
SET NAMES utf8;

-- 修改已创建数据库的字符集
alter database mydb character set 'utf8mb4';
-- 修改已创建数据表的字符集
alter table mytbl convert to character set 'utf8mb4';

-- 已经乱码数据,无论是修改 mysql 配置文件或是修改库、表字符集,都无法改变已经变成乱码的数据。
-- 只能删除数据重新插入或更新数据才可以完全解决

大小写不敏感,Windows 系统默认大小写不敏感,但 Linux 系统是大小写敏感的

-- 查看
show variables like '%lower_case_table_names%'

-- 0 大小写敏感
-- 1 大小写不敏感。创建的表,数据库都是以小写形式存放在磁盘上,对于 sql 语句都是转换为小写对表和 DB 进行查找
-- 2 创建的表和 DB 依据语句上格式存放,凡是查找都是转换为小写进行

修改时区

-- 查看时间
SELECT NOW();
-- 查看时区
SHOW VARIABLES LIKE '%time_zone%';

-- 临时修改,重启 MySQL 服务后失效
SET GLOBAL time_zone='+8:00';
flush privileges;

 


https://dev.mysql.com/doc/mysql-yum-repo-quick-guide/en

https://dev.mysql.com/doc/refman/5.7/en/server-configuration-defaults.html & https://dev.mysql.com/doc/refman/8.0/en/server-configuration-defaults.html

中文 5.1:https://dev.mysql.com/doc/index-archive.html & https://jhxxb.gitee.io/blog/refman-5.1-zh.html-chapter/index.html

https://mysqltutorial.org & http://ourmysql.com & https://imysql.com

posted @ 2019-07-09 16:37  江湖小小白  阅读(12896)  评论(0编辑  收藏  举报