因为工做须要,常常统计各种信息,因而有了开发部署一套企业信息管理系统的需求。考虑到只是本部门的须要,且有人力资源支持开发,因此由咱们本身开发。硬件使用员工淘汰的旧硬件,软件计划采用 LAMP 组合,其余须要开发的部分,也由咱们本身完成。简单说来,不花一分钱,就要完成这项工做。mysql
操做系统采用 CentOS-7.4,MySQL 选用配套的 mariadb-5.5.56。我本身其实也是个新手,没有干过这项工做,因此过年期间也加班加点,争取年后能在单位的机器上当即部署使用。如今,记下这个过程,以备不时之需。sql
CentOS 7 的安装再也不详述,选择最小安装便可,剩下的软件都可以在操做系统安装后再安装。数据库
MySQL 之因此选择 mariadb 而不是原生 MySQL 是由于在咱们的业务范围内,mariadb 彻底能知足需求,且是CentOS 7 自带的,应该解决了很多兼容性问题。从百度百科咱们知道,MariaDB数据库管理系统是MySQL的一个分支,主要由开源社区在维护,采用GPL受权许可。MariaDB的目的是彻底兼容MySQL,包括API和命令行,使之能轻松成为MySQL的代替品。基于以上缘由,咱们选择了 mariadb。安全
安装 mariadb服务器
# yum install -y mariadb mariadb-server # systemctl list-unit-files | grep mariadb mariadb.service disabled # systemctl enable mariadb.service # systemctl start mariadb.service
必须拥有 root 权限才能安装,且安装后要启用且启动 mariadb.service。网络
更该密码测试
$ mysql MariaDB [(none)]> set password = password('coder'); ERROR 1133 (42000): Can't find any matching row in the user table MariaDB [(none)]> flush privileges; ERROR 1227 (42000): Access denied; you need (at least one of) the RELOAD privilege(s) for this operation # mysql MariaDB [(none)]> flush privileges; Query OK, 0 rows affected (0.00 sec) MariaDB [(none)]> set password = password('coder'); Query OK, 0 rows affected (0.00 sec) $ mysql MariaDB [(none)]> set password = password('coder'); ERROR 1133 (42000): Can't find any matching row in the user table $ mysql -u root -p Enter password: MariaDB [(none)]>
安装完 mariadb 后,退出 root 权限,此时启动 mysql,能正常启动,可是没法设置密码。查 mysql 错 误代码说明里,查到 mysql 错误 1133 是数据库用户名不存在 ;查网上解决办法,好多提示执行 FLUSH PRIVILEGES; 命令,但仍然没法成功执行。但从 root 用户就能够正确执行 FLUSH PRIVILEGES; 和 set
password 命令,后来查系统数据库的表,用户权限表中,只有 root 用户,没有 Linux 系统中的普通用 户,因此普通用户链接数据库后,也没法执行有影响的命令。this
若是平常应用中,须要从 Linux 系统的普通用户链接数据库,则须要使用 mysql -u root -p 命令并输入设 置的数据库 root 用户密码,不是 Linux 系统 root 用户密码,并且,必须使用 -p 选项,不然会提示:编码
ERROR 1045 (28000): Access denied for user 'root'@'localhost' (using password: NO)操作系统
此时,仍然没法进入数据库。
数据库安全设置
MariaDB 推荐全部生产环境的 MariaDB 服务器都运行此脚本。
# mysql_secure_installation
(1). 设置密码,因为前面已经设置过,此处不须要更改;
(2). 删除数据库的匿名帐户,正是由于有此匿名帐户,咱们能够以空身份登录(仅输入 mysql ),但无 法完成其余大部分操做。此处应该删除该匿名帐户;
(3). 禁止 root 用户从网络登录, root 用户仅被容许从 'localhost' 登录,此处应该选择 Yes ;
(4). 删除 test 数据库,该数据库仅用于测试,应该在转入生产环境前删除,此处选择删除;
(5). 从新载入权限表,以使所作的更改生效,此处选择 yes;
数据库字符集设置
因为数据库中须要输入输出中文信息,因此须要作支持中文设置。
MariaDB [(none)]> show variables like 'char%';
默认状况下,该命令输出的各类字符集多数是 latin1,不支持中文,此时若是建立数据库、表,并写入中 文信息。插入操做能成功执行,可是查询时,涉及中文信息的会以“??? “的方式显示,彻底没法阅读。
更改办法:
In file /etc/my.cnf.d/client.cnf, after the '[client]' zone, add the next line as follows:
[client]
default-character-set=utf8
in file /etc/my.cnf.d/server.cnf, after the '[server]' zone, add the next line as follows:
[server]
character-set-server=utf8
Restart the mariadb.service
systemctl restart mariadb.service
作完这些准备工做,就能够在 mariadb 数据库中使用中文了。若是采用远程链接,必须保证远程链接工 具使用的编码和数据库一致。
建立数据库表
MariaDB [(none)]> create database worker_info; MariaDB [(none)]> use worker_info; MariaDB [(none)]> create table wid_name ( wid int unsigned not null, name varchar(10) not null, primary key (wid) );
执行 insert 命令插入数据
MariaDB [(worker_info)]> insert into wid_name (wid, name ) values ( 2018101001, '今天' );
数据库的安装基本到此结束。