Mariadb 数据库学习笔记
作者: dkvirus 发表于: 2018-10-07 23:33:55 最近更新: 2018-12-14 09:52:31

1. 介绍

Mysql 被甲骨文公司收购,有闭源风险,社区人员新建了一个分支 Mariadb,采用 GPL 授权,是开源的。

2. 安装

centos7安装mariadb指南

1
2
3
$ yum install mariadb-server        <= 安装 mariadb 服务端
$ systemctl enable mariadb <= 设置 mariadb 开机自启动
$ systemctl start mariadb <= 启动 mariadb 服务

mac安装mariadb

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
$ brew install mariadb

######### 有用的信息 ##########
A "/etc/my.cnf" from another install may interfere with a Homebrew-built
server starting up correctly.

MySQL is configured to only allow connections from localhost by default

To connect:
mysql -uroot

To have launchd start mariadb now and restart at login:
brew services start mariadb
Or, if you don't want/need a background service you can just run:
mysql.server start
==> Summary
🍺 /usr/local/Cellar/mariadb/10.3.10: 658 files, 175.3MB

3. 服务端设置

服务端强化设置(可选操作):运行脚本 mysql_secure_installation,主要做了下面几件事:

  • 重置 root 用户登录密码,需要输入 root 用户当前密码;
  • 删除匿名用户;
  • 禁止远程登录数据库时使用 root 用户登录,本机可以使用 root 用户登录;
  • 删除 test 数据库;

使用 root 用户登录 mariadb 客户端:$ mysql -u root -p xxx 后面 xxx 表示 root 用户登录密码。
mariadb 客户端有很多种,安装 mariadb-server 服务端时会默认安装一个黑窗口里的客户端。

4. 创建普通用户

创建数据库 testdb,创建普通用户 testuser,用户密码设置为 password

1
2
3
> create database testdb;
> create user 'testuser'@localhost identified by 'password';
> grant all on testdb.* to 'testuser' identified by 'password';

或者简写

1
2
> create database testdb;
> grant all on testdb.* to 'testuser' identified by 'password';

使用 testuser 用户登录

1
$ mysql -u testuser -p

5. 重置 root 用户密码

root 用户密码忘记了怎么办?先关闭服务,安全模式启动服务,此时使用 root 用户登录不需要输入密码,通过客户端登录服务后修改密码。

1
2
3
4
5
6
7
8
9
10
11
$ systemctl stop mariadb
$ mysqld_safe --skip-grant-tables &

$ mysql -u root

> use mysql;
> update user SET PASSWORD=PASSWORD("password") WHERE USER='root';
> flush privileges;
> exit

$ systemctl start mariadb

6. 远程连接数据库

命令行连接,输入下面代码回车让输入登录密码,正确即可成功登录。

1
$ mysql -u testuser -p -h 111.122.133.144 -P 3306 -D testdb
  • -u 后面接登录用户;
  • -p 表示登录密码,占个位置;
  • -h 表示数据库所在的主机名(ip 或者进行过域名解析的域名);
  • -P 后面接数据库开放端口;
  • -D 后面接数据库名称。

图形化客户端连接。mac 上好用的、免费的图形化客户端工具:Sequel Pro

note:如果使用客户端连接失败,先检查下云主机是否开放对应端口,阿里云主机每打开一个端口都需要去控制台配置规则的。详情见:阿里云服务器配置开放端口

7. 修复服务端编码

$ mysql -u testuser -p 进入客户端,输入 \s 可以查看数据库状态,其中有一行为 Server characterset,mac 上安装完数据库服务端默认编码为 utf8mb4,centos7 安装完服务端默认编码也不是 utf8。为保持统一,修改服务端编码。

编辑 /etc/my.cnf(mariadb配置文件),添加下面代码,重启数据库 $ systemctl restart mariadb

1
2
[mysqld]
character-set-server = utf8

登录客户端,查看编码

1
> show variables like '%char%';

8. 关键字

在写代码时,有个字段命名为 desc,描述的意思,结果怎么也无法存库,查询一番 desc 原来是数据库的关键字。=>mysql所有关键字

9. 唯一键约束

1)单列唯一键,建表时加约束

1
2
3
4
5
CREATE TABLE `user` (
    `id` int(11) NOT NULL AUTO_INCREMENT, 
    `username` varchar(18) NOT NULL unique,  
    PRIMARY KEY (`Id`) 
) ENGINE=InnoDB AUTO_INCREMENT=1018 DEFAULT CHARSET=utf8;

2)单列唯一键,给已建好的表添加约束

1
ALTER TABLE `user` ADD unique(`username`);

3)多列唯一键,建表时加约束

1
2
3
4
5
6
7
CREATE TABLE `user` (
  `id` int(20) NOT NULL AUTO_INCREMENT,
  `first_name` VARCHAR(128) DEFAULT NULL,
  `last_name` VARCHAR(128) DEFAULT NULL,
  PRIMARY KEY (`id`),
  UNIQUE KEY `first_name` (`first_name`,`last_name`)
) ENGINE=INNODB AUTO_INCREMENT=2 DEFAULT CHARSET=utf8;

4)多列唯一键,给已建好的表添加约束

1
2
ALTER TABLE user
ADD UNIQUE KEY(first_name, last_name);

5)查看表唯一约束情况

1
show index from user;

6)删除唯一约束

1
ALTER TABLE user DROP INDEX `name`;

10. 查看建表语句

1
show create table user;

11. 字符串拼接

字符串拼接

12. 时间处理

时间处理

13. 存数据时有则更新或不操作

MySQL数据表中记录不存在则插入,存在则更新/不操作

14. 数据类型转换 decima => int

mysql 中使用 sum() 函数,int 类型会自动转 decima 类型,如何再转为 int 类型?

MySQL数字类型转换函数(concat/cast)1、将Int转为varchar经常用concat

15. 分页查询

SQL查询前10条记录(SqlServer/mysql/oracle/sybase)[语法分析]

首页
友链
归档
dkvirus
动态
RSS