centos7最小化安装后mysql_CentOS7最小化安装后要做的事(5):MariaDB安装与配置

考虑到《可能是目前最详细简明的CentOS7安装与管理教程》一文太长,以及简书目前不支持导航目录,阅读起来过于不便,故对其分解成《CentOS7最小化安装后要做的事》系列,方便以后有针对性的丰富内容。

MariaDB:

CentOS 6 或早期的版本中提供的是 MySQL 的服务器/客户端安装包,但 CentOS 7 已使用了 MariaDB 替代了默认的 MySQL。MariaDB数据库管理系统是MySQL的一个分支,主要由开源社区在维护,采用GPL授权许可 MariaDB的目的是完全兼容MySQL,包括API和命令行,使之能轻松成为MySQL的代替品。

在这里先介绍下常用的RPM命令:

查询软件包

rpm -q xxx

rpm -qp ***.rpm: 获取当前目录下的rpm包相关信息

rpm -qa | less :列出所有已安装的软件包

rpm -qa | grep xxx :列出所有被安装的xxx

rpm -qf /usr/sbin/httpd :查看某个文件属于哪个软件包,可以是普通文件或可执行文件,跟文件的绝对路径

rpm -qi xxx:列出已安装的xxx包的标准详细信息

rpm -ql xxx:列出rpm包xxx的文件内容

安装软件包

rpm -ivh ***.rpm:其中i表示安装,v表示显示安装过程,h表示显示进度

升级软件包

rpm -Uvh ***.rpm

删除软件包

rpm -e xxx

rpm -e -–nodeps xxx:不考虑依赖包

rpm -e –-allmatches xxx:删除所有跟xxx匹配的所有版本的包

1.1 安装

首先查看系统是否安装过mariadb:rpm -qa | grep mariadb

6a8579eed9a5

先卸载系统中的mariadb:rpm -e --nodeps mariadb-libs-****.x86_64

6a8579eed9a5

查看可安装版本:yum list mariadb*

6a8579eed9a5

这里要说明一下:

出于实用的目的,MariaDB是同一MySQL版本的二进制替代品(例如MySQL 5.1->MariaDB 5.1, MariaDB5.2和MariaDB 5.3是兼容的。MySQL 5.5将会和MariaDB 5.5保持兼容)。简单说5.x就是为了兼容MySQL5.x的,接口几乎一致,体验上几乎无差别。

但是从2012年11月12日发布的mariadb10.0.0开始,不在依照MySQL的版本号,10.0.x版本是以5.5版为基础,加入移植自MySQL5.6版的新功能和自行开发的新功能。

所以,为了更好的兼容已有MySQL(5.6以前)版本,这里我们不安装最新版marisdb10,而是选择5.5版本。

这里我们安装mariadb与mariadb-server即可。

执行命令yum install -y mariadb mariadb-server

6a8579eed9a5

6a8579eed9a5

程序会自动分析其需要的依赖并下载安装,我们静等完成就好。

6a8579eed9a5

到此,mariadb安装结束。

1.2 启动配置

启动mariadb:systemctl start mariadb

查看运行状态:systemctl status mariadb

6a8579eed9a5

设置开启自启:systemctl enable mariadb

6a8579eed9a5

1.3 密码配置

登陆数据库:mysql -u root -p

6a8579eed9a5

首次安装后,root账号默认密码为空,下面我们为root账号设置密码

执行命令:mysql_secure_installation

6a8579eed9a5

6a8579eed9a5

使用刚设置的密码登陆数据库:

mysql -u root -p

6a8579eed9a5

1.4 字符集与排序规则

接下来,让我么你看下mariadb数据库字符集(Character set)和排序规则(Collation):

执行:show variables like "%character%";show variables like "%collation%";

6a8579eed9a5

这里再普及下字符集的概念:

character_set_client: 代表客户端字符集,客户端最简单的来说,就是指命令行,或者其它操作数据库的网页,应用等等,客户端字符集就代表了用户输入的字符,用什么字符集来编码。

character_set_connection: 代表与服务器连接层的字符集,mysql是连接mysqld服务器的客户端,两者连接层,采用的字符集。

character_set_database: 数据库采用的字符集。

character_set_filesystem: 文件采用的肯定是二进制最合适,不用修改。

character_set_result: 结果字符集,返回结果时采用的字符集。

character_set_server: mysql服务器采用的字符集,也就是操作默认的字符集。

character_set_system: 系统元数据(字段名等)字符集,比如我们输入的命令'insert ...'这些语句字符串采用的字符集。

collation_类同

为了保证统一,避免出现编码不一致导致的乱码问题,我们统一设置成 UTF-8:

这里不得不再次强调一下:

MariaDB / MySQL中 的 "utf8" 并不是真正的UTF-8,其中的 "utf8mb4" 才是真正的UTF-8。"utf8" 只支持每个字符最多三个字节,而真正的 UTF-8 是每个字符最多四个字节。MySQL 在5.5.3之后增加了这个 "utf8mb4" 的编码,mb4 就是 most bytes 4的意思,专门用来兼容四字节的 unicode。好在 "utf8mb4" 是 "utf8" 的超集,除了将编码改为 "utf8mb4" 外不需要做其他转换,如果要想完美兼容,或者想存储 emoji 表情之类的,最好还是设置成 "utf8mb4" 当然,为了节省空间,一般情况下使用 "utf8' 也就够了。所以,现在网络上出现的设置"utf8' 的文章,可以说都多少有些过时了。

查看数据库支持字符集:

执行 SHOW CHARSET;

可以看到当前版本的 MariaDB 是支持 "utf8mb4" 的。由于个人需要,为了节省空间,我们接下来还是设置成 "utf8",大家知道这个事情就好,再根据项目需要进行选择。

6a8579eed9a5

Snipaste_2020-01-17_13-21-40.png

临时修改(重启后失效)

字符集

– mysql> SET character_set_client = utf8 ;

– mysql> SET character_set_connection = utf8 ;

mysql> SET character_set_database = utf8 ;

mysql> SET character_set_results = utf8 ;

mysql> SET character_set_server = utf8 ;

排序规则

– mysql> SET collation_connection = utf8_general_ci;

mysql> SET collation_database = utf8_general_ci;

mysql> SET collation_server = utf8_general_ci ;

这里对mysql中的排序规则utf8_unicode_ci、utf8_general_ci的区别总结:

ci是 case insensitive, 即 "大小写不敏感"

utf8_general_ci 不区分大小写

utf8_general_cs 区分大小写

utf8_unicode_ci和utf8_general_ci对中、英文来说没有实质的差别。

utf8_general_ci校对速度快,但准确度稍差。

utf8_unicode_ci准确度高,但校对速度稍慢。

tf8_unicode_ci比较准确,utf8_general_ci速度比较快。通常情况下 utf8_general_ci的准确性就够我们用的了,如果你的应用有德语、法语或者俄语,请一定使用utf8_unicode_ci。

永久修改

首先修改my.cnf文件:vi /etc/my.cnf

在[mysqld]下添加

init_connect='SET collation_connection = utf8_general_ci'

init_connect='SET NAMES utf8'

character-set-server=utf8

collation-server=utf8_general_ci

# To ignore client information and use the default server character set

# 忽略客户端字符集信息,并使用服务器默认字符集

skip-character-set-client-handshake

6a8579eed9a5

重启mariadb:systemctl restart mariadb

重新登录,再次查看:show variables like "%character%";show variables like "%collation%";都已设置成utf8。

6a8579eed9a5

1.5 用户与权限

创建用户:CREATE USER username IDENTIFIED BY 'password';

为用户设置权限:

授予username用户在所有数据库上的所有权限:

GRANT ALL PRIVILEGES ON *.* TO 'username'@'localhost' IDENTIFIED BY 'password';

撤销username用户在所有数据库上的所有权限:

REVOKE ALL PRIVILEGES ON *.* FROM 'username'@'localhost';

授予username用户在xxx数据库上的所有权限:

GRANT ALL PRIVILEGES ON xxx.* TO 'username'@'localhost' IDENTIFIED BY 'password';

授予username用户在xxx数据库上的SELECT, UPDATE权限:

GRANT SELECT, UPDATE ON xxx.* TO 'username'@'localhost' IDENTIFIED BY 'password';

注意:上述命令中@localhost指的是本地,如果需要远程登录数据库,则使用@'%'

刷新权限:

FLUSH PRIVILEGES;

删除用户:

DROP USER username@localhost;

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值