centos gem mysql_CentOS 安装 MySQL

MySQL 安装

通过 Yum Repository 方式安装

注意点:CentOS7 默认安装了 mariadb 数据库,先移除:yum remove mariadb-libs

添加 MySQL Yum源

简要概况,它是通过安装 mysql80-community-release-el7-2.noarch.rpm 包来实现配置 Yum 源的,这个 rpm 包并非 MySQL 的真正安装包。

你可以通过下载两个途径下载这个 mysql80-community-release-el7-2.noarch.rpm 包:

wget https://repo.mysql.com//mysql80-community-release-el7-2.noarch.rpm下载下来;

下载下来之后,执行:

yum localinstall mysql80-community-release-el7-2.noarch.rpm

可以通过以下命令检查MySQL Yum源是否已成功添加:

yum repolist enabled | grep "mysql.*-community.*"

上面步骤执行完之后,会在 /etc/yum.repos.d/ 目录下生成 MySQL 相关的 Yum 源配置,需要对这个配置文件进行一些设置,启用你想安装的版本对应的源。

选择一个 MySQL 发行版

1.查看一下 Yum 源的配置,可以看到那些源是 enable、disable

yum repolist all | grep mysql

2.选择你需要安装的版本对应的源

yum-config-manager --disable mysql80-community

yum-config-manager --enable mysql57-community

由于生产环境大部分还是采用 MySQL5.7 版本,因此,我这里启用了5.7版本的源。除了上述方式,你还可以采用编辑/etc/yum.repos.d/mysql-community.repo文件,enable相应的源(enbaled=1 表示启动)。

3.验证源配置启动成功

yum repolist enabled | grep mysql

yum list|grep mysql-community-server

安装 MySQL

yum install mysql-community-server

yum install mysql-community-server-5.7.25-1.el7 # 建议指定具体的版本,保证一致性

这将安装 MySQL Server( MySQL -community-server )的包,以及运行服务器所需组件的包,包括客户机(MySQL -community-client)的包、客户机和服务器的通用错误消息和字符集(MySQL -community-common)以及共享的客户机库(MySQL -community-libs)的包。

MySQL 配置

MySQL 默认的配置文件在 /etc/my.cnf:

# For advice on how to change settings please see

# http://dev.mysql.com/doc/refman/5.7/en/server-configuration-defaults.html

[mysqld]

# Remove leading # and set to the amount of RAM for the most important data

# cache in MySQL. Start at 70% of total RAM for dedicated server, else 10%.

# innodb_buffer_pool_size = 128M

#

# Remove leading # to turn on a very important data integrity option: logging

# changes to the binary log between backups.

# log_bin

#

# Remove leading # to set options mainly useful for reporting servers.

# The server defaults are faster for transactions and fast SELECTs.

# Adjust sizes as needed, experiment to find the optimal values.

# join_buffer_size = 128M

# sort_buffer_size = 2M

# read_rnd_buffer_size = 2M

datadir=/var/lib/mysql

socket=/var/lib/mysql/mysql.sock

# Disabling symbolic-links is recommended to prevent assorted security risks

symbolic-links=0

log-error=/var/log/mysqld.log

pid-file=/var/run/mysqld/mysqld.pid

修改默认的数据保存目录以及数据库编码

数据库保存的数据和日志是相当宝贵的,数据保存位置默认是这里:datadir=/var/lib/mysql,现在,我们需要改变默认的存储位置。

1.创建相关目录

mkdir -p /data/mysql/data

mkdir -p /data/mysql/log

2.修改属组

cd /data

chown -R mysql:mysql mysql

3.移动数据

这个步骤是针对已经有数据生成时的情况,如果是刚刚安装 MySQL 数据库,那么这一步可以跳过。

注意:为了确保数据的完整性,先 systemctl stop mysqld 停止 MySQL,然后再保存数据。

暂停服务:systemctl stop mysqld;

备份数据: cp -R /var/lib/mysql /var/lib/mysql_bak;

移动数据:rsync -av /var/lib/mysql/ /data/mysql/data/,这个会将原 mysql 下的所有数据,保存到 /data/mysql/data 文件夹下,

使用-a标志保留的权限和其他目录属性,而-v提供详细输出,以便能够按照进度。

修改配置文件

vi /etc/my.cnf 编辑配置文件,数据位置和套接字都指向新的目录:

# 修改位置

datadir=/data/mysql/data

socket=/data/mysql/mysql.sock

# 新增配置

[client]

socket=/data/mysql/mysql.sock

配置预览:

[mysqld]

datadir=/data/mysql/data

socket=/data/mysql/mysql.sock

#普通项目的编码方式可以设置成 utf8

#这里设置成utf8mb4,是因为我的项目需要存储 emoji 表情,

#这种表情虽然是utf8编码,但是一个字符需要占用4个字节,而MySQL utf8编码只能存放3字节的字符。

#在MySQL 5.6 以上版本中,可以设置编码为utf8mb4,这个字符集是utf8的超集。

#注意KEY不要写错,网上很多文章都是写default-character-set是错的

character-set-server=utf8mb4

#版本5.6.19以后必须设置这一句才能使[client]中设置的编码有效

character-set-client-handshake = FALSE

collation-server=utf8mb4_unicode_ci

init_connect='SET NAMES utf8mb4'

#表名是否区分大小写:1表示不区分大小写,2表示区分

lower_case_table_names=1

# Disabling symbolic-links is recommended to prevent assorted security risks

symbolic-links=0

log-error=/data/mysql/log/mysqld.log

#skip-grant-tables # 如果去除注释,可以实现免密登录,不建议开启免密

[mysql]

default-character-set=utf8mb4

[client]

socket=/data/mysql/mysql.sock

#普通项目的编码方式可以设置成 utf8

#这里设置成utf8mb4,是因为我的项目需要存储 emoji 表情,

#这种表情虽然是utf8编码,但是一个字符需要占用4个字节,而MySQL utf8编码只能存放3字节的字符。

#在MySQL 5.6 以上版本中,可以设置编码为utf8mb4,这个字符集是utf8的超集。

default-character-set=utf8mb4

以上配置之外,还进行了编码的配置,支持 UTF-8。

启动 systemctl start mysqld,这样子,之前的账户密码等数据才会保留!!!

4.验证

启动 MySQL

systemctl start mysqld # 启动

systemctl status mysqld # 状态查询

systemctl enable mysqld # 开机自启

systemctl daemon-reload # 重载所有修改过的配置文件

默认初始密码:

grep 'temporary password' /var/log/mysqld.log # 未未修改日志路径

grep 'temporary password' /data/mysql/log/mysqld.log # 修改日志路径

验证:

mysql -u root -p

select @@datadir; # 执行这个命令,需要先用 ALTER USER 初始化命令

SHOW VARIABLES LIKE 'character%'; # 查看编码,character_set_system 一直都会是 utf8,不能被更改

修改 root 密码

注意:MySQL 5.7 默认安装了密码安全检查插件(validate_password),默认密码检查策略要求密码必须包含:大小写字母、数字和特殊符号,并且长度不能少于 8 位

设置管理员密码,以下几种方式都一样:

SET PASSWORD = PASSWORD("Root_123456");

ALTER USER 'root'@'localhost' IDENTIFIED BY 'Root_123456';

set password for 'root'@'localhost'=password('Root_123456');

以后可以通过如下命令修改:

use mysql;

update user set password=PASSWORD('MyNewPass5!') where user='root';

还需要刷新使其密码生效:

alter user 'root'@'localhost' password expire never;

flush privileges;

如果你是安装的8.0版本,则需要这么改:

ALTER USER 'root'@'localhost' identified by 'Root_123456';

新建用户

create user 'cicd'@'%' identified by 'Root_123456'; # 因为要可以从任何 ip 登录,所以 host 设置的是%号

赋予权限:

grant all privileges on *.* to 'cicd'@'%' with grant option; # MySQL 8.0 语法 *.* 表示任何数据库的任何表

grant all privileges on *.* to 'cicd'@'%' identified by '123456' with grant option; # MySQL 5.7 语法

flush privileges; # 这时候登录时,就可以看到所有数据库了

grant select,insert on *.* to 'imooc'@'%' with grant option; # 只赋予部分权限

revoke all privileges on *.* from imooc; # 收回所有权限

远程连接 MySQL

需要关闭防火墙:

systemctl stop firewalld # 关闭防火墙

默认只允许root帐户在本地登录,如果要在其它机器上连接mysql,必须添加一个允许远程连接的帐户。或者修改 root 为允许远程连接(不推荐)。

mysql -u root -p 进入mysql 终端:

use mysql;

select * from user \G; # G 格式化显示 host 和 user 两个字段

select Host,User from user \G; # Host表示允许哪些主机访问

update user set Host='%' where Host='localhost' and User='root';

flush privileges; # 刷新权限 或者 systemctl restart mysqld

MySQL 常用命令

show databases;

use tables;

show variables like 'character%'; # 查询编码

MySQL 命令补全行工具

pip install -U mycli

mycli -u root [-h localhost]

mycli local_database

mycli -h localhost -u root app_db

mycli mysql://amjith@localhost:3306/django_poll

FAQ

如何查看 MySQL 版本?

mysql -V

忘记 Root 密码?

sudo vim /etc/my.cnf # 打开配置文件,最后增加下面一行,实现MySQL免密登录

skip-grant-tables # 跳出授权表的验证

systemctl restart mysqld

use mysql;

show tables;

update user set authentication_string = password('root_123456') where user = 'root'; # 旧方法

flush privileges;

alter user 'root'@'%' identified by 'Root_1234'; # 将 skip-grant-tables 去掉

参考

安装

配置

修改目录

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值