linux mysql mariadb_Linux 下 MySQL(Mariadb) 安装与使用

由于工作需要,经常统计各类信息,于是有了开发部署一套企业信息管理系统的需求。考虑到只是本部门的需要,且有人力资源支持开发,所以由我们自己开发。硬件使用员工淘汰的旧硬件,软件计划采用 LAMP 组合,其他需要开发的部分,也由我们自己完成。简单说来,不花一分钱,就要完成这项工作。

操作系统采用 CentOS-7.4,MySQL 选用配套的 mariadb-5.5.56。我自己其实也是个新手,没有干过这项工作,所以过年期间也加班加点,争取年后能在单位的机器上立即部署使用。现在,记下这个过程,以备不时之需。

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 系统中的普通用

户,所以普通用户连接数据库后,也无法执行有影响的命令。

如果日常应用中,需要从 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, '今天' );

数据库的安装基本到此结束。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值