MariaDB二进制安装及基本管理

本文旨在复习MariaDB二进制安装以及基本管理mysql


基础知识linux


一、MariaDB是MySQL原做者新做,开源社区维护,功能特性相较MySQL至少持平;web

二、采用新引擎XtraDB替代MySQL的InnoDB,较早版本5.1上的MySQL默认存储引擎是MyISAM;sql

三、Xtradb在多核CPU上面的性能和伸缩性要更好;对于内存的分配和使用也要更好;也解除了InnoDB的不少限制;提供了比InnoDB更多的配置和性能监控参数。数据库

四、数据库备份常有冷备、温备、热备,M有ISAM是不支持热备的,应该被淘汰了。windows

五、最新版本分为5.10和5.5这2个大版本,本次实验环境采用5.5.46安全


通用二进制安装bash


MariaDB有3种安装方式,rpm包、编译、通用二进制安装网络

    1. RPM安装:适合小环境,核心功能都具有,快速搭建环境;
ide

    2. 编译安装:比较推荐,复杂要求高,要有编译环境,可指定几乎全部选项;

    3. 通用二进制安装:最推荐的方式,预先编译过的,既避免了编译的麻烦,又提供加强功能。


步骤1.下载二进制包,可根据自身平台选择

因为我事先在windows中下载好了,这里以共享的方式进行了挂载

mount -t cifs -o username=lance,password=rainbow //192.168.1.106/web /tmp/share
cp /tmp/share/mariadb-5.5.46-linux-x86_64.tar.gz /usr/local

步骤2.解压安装MariaDB到/usr/local路径,并重命名为mysql

cd /usr/local
tar -zxvf mariadb-5.5.46-linux-x86_64.tar.gz 
mv mariadb-5.5.46-linux-x86_64 mysql

步骤3.添加用户和组[让MySQL以mysql身份运行,避免安全风险]

groupadd mysql
useradd -g mysql mysql

步骤4.修改Mysql目录的属主、属组,各级都递归[由于mysql运行时如建立数据库等必须等工做目录、数据库目录进行读写操做,因此必须确保拥有权限]

chown -R mysql:mysql /usr/local/mysql

步骤5.MariaDB的基本安装已经完成,接下来须要修改配置文件、初始化

建立配置文件

cp -a /usr/local/mysql/support-files/my-small.cnf /etc/my.cnf
cp: overwrite `/etc/my.cnf'? y

修改配置文件

vi /etc/my.cnf

wKiom1YsNSyzhJOpAAFZ934MhJ4941.jpg

在此处根据需求还能够进行必定修改,如字符集设置、日志文件设置、binlog文件设置等

请注意:datadir指定的数据库目录是否须要提早建立呢?

不建议提早建立,由于数据库初始化的时候会以mysql用户身份去建立,从此数据库的操做也会同步读写到此目录,而若以root身份提早建立了该目录,可能因为权限问题致使mysql没法正常工做,切记!

步骤7.初始化MariaDB运行

/usr/local/mysql/scripts/mysql_install_db --user=mysql --basedir=/usr/local/mysql --datadir=/mysql_data

步骤8.添加到开机启动项

cp -a /usr/local/mysql/support-files/mysql.server /etc/rc.d/init.d/mysqld
chkconfig --add mysqld
chkconfig --level 2345 mysqld on

步骤9.启动并测试连接

service mysqld start

注意:此时输入mysql可能没法链接,这是由于当前环境变量路径中找不到mysql

echo "export PATH=/usr/local/mysql/bin:$PATH">>/etc/profile
source /etc/profile

wKioL1YsNqWDxup5AAJTAXS2s-A780.jpg


数据库基本操做


建立数据库

CREATE {DATABASE | SCHEMA} [IF NOT EXISTS] db_name
    [create_specification] ...

create_specification:
    [DEFAULT] CHARACTER SET [=] charset_name
  | [DEFAULT] COLLATE [=] collation_name

删除数据库

DROP {DATABASE | SCHEMA} [IF EXISTS] db_name

修改数据库

ALTER {DATABASE | SCHEMA} [db_name]
    alter_specification ...
ALTER {DATABASE | SCHEMA} db_name
    UPGRADE DATA DIRECTORY NAME
alter_specification:
    [DEFAULT] CHARACTER SET [=] charset_name
  | [DEFAULT] COLLATE [=] collation_name

除此之外,经过SHOW命令能够查看一些数据库的公共属性,总结以下:

SHOW DATABASES;                  --->查看数据库列表;
SHOW CREATE DATABASE db_name;    --->查看指定数据库的详细信息;
SHOW CHARACTER SET;              --->查看MariaDB支持的字符集;
SHOW COLLATION;                  --->查看支持的字符集及默认排序规则;
SHOW VARIABLES;                  --->查看MariaDB全局变量;
HELP SHOW ;                      --->更多的信息可使用SHOW来查看;

例1:建立一个名为lance的数据库,若是不存在则建立,建立完成后,修改数据库字符集为GB2312

CREATE DATABASE IF NOT EXISTS lance;
SHOW CHARSET;
ALTER DATABASE lance CHARACTER SET=gb2312;

wKiom1YsOlqBqo8JAAGZ96Tinng323.jpg


表管理


建立表

CREATE TABLE [IF NOT EXISTS] tbl_name (col1 type1 dec1, col2 type2 dec2, ...)

删除表

DROP TABLE

修改表

ALTER [ONLINE | OFFLINE] [IGNORE] TABLE tbl_name
    [alter_specification [, alter_specification] ...]
    [partition_options]

查看表的基本结构

DESC tbl_name
SHOW [FULL] TABLES [{FROM | IN} db_name]
     [LIKE 'pattern' | WHERE expr]

例2:使用刚才的lance数据库,建立一个表userinfo,要求以下

用户ID userid,INT,自增,主键
姓名 username,定长,20
QQ号 qq,INT,12
Email mail,varchar(20)
use lance;
CREATE TABLE userinfo (userid INT UNSIGNED NOT NULL PRIMARY KEY,username CHAR(30) NOT NULL,qq INT UNSIGNED,mail VARCHAR(20));

wKioL1YsPpPD_UWSAAHvwdPwpgo216.jpg


索引管理


建立索引

CREATE [UNIQUE|FULLTEXT|SPATIAL] INDEX index_name ON tbl_name (index_col_name,...)

删除索引

DROP INDEX index_name ON tbl_name

查看索引

SHOW INDEX FROM db_name.table_name

例3:在建立表userinfo的时候,字段userid指明了PRIMARY KEY,其实就是一种惟一键索引,这里咱们再建立一个QQ号字段的索引,索引名为qq;

CREATE UNIQUE INDEX qq ON userinfo(qq);

wKioL1YsQLqxJ9w6AAJyb96a7M4025.jpg


用户管理


值得一提的是,MariaDB和MySQL的登录机制很特殊,帐号验证有2部分组成:身份信息+登录主机,即咱们常见的'username'@'host' 这意味着输入了正确的帐号密码未必能成功登录,必须在合法受权的主机上才能够登录。

此处,为root设置密码后,我使用ip地址来链接登录,一探究竟;

wKioL1YsQi7SdaNUAAIYrsSs2m0721.jpg

显然即使咱们输入了正确的用户名密码,使用不一样的链接主机也不必定能成功对吗?这就涉及到接下来的用户及权限管理问题了。

用户帐号: 'username'@'host'

  host可以使用IP、网络地址、使用通配符(_和%);

建立用户帐号,并赋予密码

CREATE USER 'username'@'host' IDENTIFIED BY [PASSWORD] 'password';

删除用户

DROP USER 'username'@'host';

查看用户

SELECT host,user FROM mysql.user;

wKiom1YsRNngdCrxAAF8XSGV_B4628.jpg


权限管理


用户链接进数据库后,并不意味着他拥有全部库的任何权限,这些权限是能够细分的,好比A用户对A库有所有权限,B用户对A库只有只读权限,等等,这就牵扯到受权、回收机制了。

也能够受权给函数等等,若是用户事先不存在,则建立此帐号并受权;

ALL [PRIVILEGES]:全部权限

受权:

GRANT priv1,... ON db_name.tbl_name TO 'username'@'host' [IDENTIFIED BY [PASSWORD] 'password'];

查看用户已经得到的受权

SHOW GRANTS [FOR user]

收回受权

REVOKE priv1,... ON db_name.tbl_name FROM 'username'@'host';

例4:建立一个用户,容许来自任何地方的链接,可是仅对数据库lance有所有权限,对于其余的数据库无权限

CREATE USER 'onlylance'@'%' IDENTIFIED BY [PASSWORD] 'zxczxc';
GRANT ALL ON lance.* TO 'onlylance'@'%';

wKiom1YsRjmCUregAAHlhjPhZXQ827.jpg

wKioL1YsRnKzZvt4AAKVmLI64kk612.jpg

相关文章
相关标签/搜索