上一篇文章简介了wordpress的安装配置和使用,wordpress有丰富的插件,这两天找到了可以编写代码的插件,就可以对MySQL的安装配置和基本使用方法做一下记录了。
1.MySQL的安装
目前CentOS支持MySQL的开源分支MariaDB的直接安装
【yum install mariadb* -y】
2.MySQL的用户添加和登录权限设置
【mysql_secure_installation】
命令可以设置root的登录数据的密码以及其他的基础设置,不进行root密码设置的话,MySQL是可以免密登录的,设置密码后登录命令为
【mysql -uroot -p'password'】
进入数据库后,可以进行用户管理操作,首先是创建用户
【grant all privileges on *.* to username@"%" identified by "password"】
此命令包含的权限非常多,all privileges代表的是全部数据库操作权限,增删查改等(insert/delete/select/update),这里可以不给全部的权限,,*.*代表MySQL中的所有数据库所有表,前一个*代表库名,后一个*代表表名,%是mysql的通配符之一,这里表示任意访问来源的IP,这里假设用户名git密码password的用户需从192.168.100.100主机远程访问gogs数据库,只给查询/插入的权限,后来发现insert操作权限有风险,需要删除该权限,则mysql语句分别为
【grant select,insert gogs.* to git@"192.168.100.100" identified "password"】
【revoke insert on what from git】
以上语句只要改变数据库,用户名,地址和密码中的一项,就代表在mysql数据库中的user表添加一条记录,这些信息都可以select查询到,要禁用以上的权限设置,直接在user表中删除即可,查询和删除的语句分别为
【select user,host from user】
【delete from user where user="git" and host="%"】
【flush privileges】刷新MySQL的系统权限相关表,以上的权限设置才会生效。以上涉及到的远程访问都是基于开放了3306端口前提下的。
3.MySQL数据库表的创建
我的工作接触到的数据库表的创建有zabbix和gogs,这两个软件都需要用提供的脚本进行数据库表的创建。zabbix需要先添加一个名为zabbix的数据库,再执行脚本内的sql语句
【create database zabbix charset 'utf8'】
【grant all privileges on zabbix.* to zabbix@"%" identified by "password"】
【flush privileges】
【mysql -uzabbix -p'password' zabbix < /usr/share/doc/zabbix-server-mysql-3.4.4/create.sql】
zabbix数据库的库表结构在后续我会专门写一篇介绍zabbix的安装使用的文章中再详细讲解,gogs的数据库表结构导入也是一样的操作。此处的重点在于charset 'utf8'这个字符属性设置,在MySQL数据中如果不能设置好字符属性会出现数据库乱码问题。首先需要熟悉一下以下三个查询语句
【show character set】
这个命令主要是列举编码方式,简介,字符比较排序的默认规则和最大字符长度。比较规则的后缀会有ci和cs的标识,分别代表case insensitive和case sensitive,大小写不敏感和大小写敏感,前者不考虑大小写。还有ai标识,accent insensitive,不考虑发音,第一声/第二声/第三声/第四声
MariaDB [(none)]> show character set; +----------+-----------------------------+---------------------+--------+ | Charset | Description | Default collation | Maxlen | +----------+-----------------------------+---------------------+--------+ | big5 | Big5 Traditional Chinese | big5_chinese_ci | 2 | | dec8 | DEC West European | dec8_swedish_ci | 1 | | cp850 | DOS West European | cp850_general_ci | 1 | | hp8 | HP West European | hp8_english_ci | 1 | | koi8r | KOI8-R Relcom Russian | koi8r_general_ci | 1 |
【status】
MariaDB [(none)]> status -------------- mysql Ver 15.1 Distrib 5.5.44-MariaDB, for Linux (x86_64) using readline Connection id: 24 Current database: Current user: root@localhost SSL: Not in use Current pager: stdout Using outfile: '' Using delimiter: ; Server: MariaDB Server version: 5.5.44-MariaDB MariaDB Server Protocol version: 10 Connection: Localhost via UNIX socket Server characterset: latin1 Db characterset: latin1 Client characterset: utf8 Conn. characterset: utf8 UNIX socket: /var/lib/mysql/mysql.sock Uptime: 3 days 3 hours 54 min 29 sec Threads: 1 Questions: 140 Slow queries: 0 Opens: 75 Flush tables
这里出现的connection就是连接器,用于client和server之间进行编码转换的,这三者存在一个循环。我以client GBK/server UTF8编码为例简单解释一下,client_start(GBK)-->connection(GBK->UTF8)-->server(UTF8)-->connection(UTF8->GBK)-->client_result(GBK)。
MariaDB [(none)]> show variables like '%char%'; +--------------------------+----------------------------+ | Variable_name | Value | +--------------------------+----------------------------+ | character_set_client | utf8 | | character_set_connection | utf8 | | character_set_database | latin1 | | character_set_filesystem | binary | | character_set_results | utf8 | | character_set_server | latin1 | | character_set_system | utf8 | | character_sets_dir | /usr/share/mysql/charsets/ | +--------------------------+----------------------------+ MySQL数据库相对于其他数据库灵活度高,允许表中不同字段都能有不同的编码 方式,因此需要灵活应用set语句来进行字符编码的设定。 MySQL学习第一篇就先到这里了,下面一篇我会结合我做过的zabbix监控数据自 动处理工作,做库表的设计和增删查改的记录。