好久没安装数据库服务器了,记得上次 MySQL 安装配置的时候,系统仍是 Cenots 6.5 ,如今 Centos 系统版本更新太快,都跟不上步伐了,恰好最近公司须要几台 Mariadb Server 恰好练练手。html
因为每家公司的数据库服务器 版本不一样,但我依然推荐你们使用 Mariadb 数据库,至少目前该社区及产品很是稳定,至于有什么新功能,建议去其官方了解更多特性。mysql
$ cat /etc/redhat-release CentOS Linux release 7.4.1708 (Core) x64
下载MariaDB二进制安装包:linux
https://downloads.mariadb.org 解压并安装 Mariadb-devel 静态库: $ yum install mariadb-devel numactl -y $ mkdir /renwole $ cd /renwole $ tar zxvf mariadb-10.2.8-linux-glibc_214-x86_64.tar.gz 移动目录并建立软链接: $ mv mariadb-10.2.8-linux-glibc_214-x86_64 /usr/local $ cd /usr/local $ ln -s mariadb-10.2.8-linux-glibc_214-x86_64 mysql 建立 MariaDB(MySQL)用户和组 $ groupadd mysql $ useradd -g mysql mysql 赋予 MariaDB(MySQL)目录权限: $ cd /usr/local/mysql $ chown -R root . $ chown -R mysql data
删除自带的 my.cnf 配置文件,并建立新的配置文件:sql
$ rm -rf /etc/my.cnf $ cp /usr/local/mysql/support-files/my-large.cnf /etc/my.cnf
注:/usr/local/mysql/support-files下有5个配置文件,请根据服务器的内存大小选择配置文件(你也能够自定义优化my.cnf配置文件,若是你以前有,只要是同版本就能够正常使用,从而无须再次建立,MariaDB(MySQL)启动的时候会自动到/etc下寻找my.cnf文件)。数据库
文件分别是:express
my-small.ini (内存 < = 64M) my-medium.ini (内存 128M ) my-large.ini (内存 512M) my-huge.ini (内存 1G-2G) my-innodb-heavy-4G.ini (内存 4GB)
在my.cnf文件的 mysqld 字段加入数据库路径:vim
$ vim /etc/my.cnf datadir = /usr/local/mysql/data
注意:这个路径就是初始化数据库用的,未来你的数据库都存在这个目录,这个存储路径是能够更改到其余路径的,以避免未来系统宕机带来没必要要的损失,因此请根据本身的需求更换相对的路径,别忘记给权限就行。centos
$ cd /usr/local/mysql/scripts $ ./mysql_install_db --user=mysql --basedir=/usr/local/mysql --datadir=/usr/local/mysql/data $ cd /usr/local/mysql/support-files $ cp mysql.server /etc/init.d/mysql $ chmod +x /etc/init.d/mysql $ systemctl enable mysql
添加系统变量,例如直接输入:mysql -uroot -p 会提示无此命令:缓存
$ vim /etc/profile
在文件末端添加如下内容:安全
PATH=$PATH:/usr/local/mysql/bin export PATH
使变量当即生效并启动Mysql数据库:
$ source /etc/profile $ systemctl restart mysql $ ss -antp
初始化MariaDB(MySQL)安全帐户
$ /usr/local/mysql/bin/mysql_secure_installation
注意:回车提示你输入MariaDB(MySQL)密码,新安装的mysql密码默认为空,因此直接回车,而后输入Y设置MySQL密码,输入两次回车便可,接下来所有按Y便可(大体意思是删除test数据库、匿名帐号、最后Y配置生效。
启用mariadb数据库
$ systemctl start mariadb #启动数据库服务守护进程
$ systemctl enable mariadb #自动启动服务
$systemctl status mariadb # 查看 MariaDB 服务当前状态
佛曰:“先有库,后有表,再有数据…..”
建立数据库
CREATE DATABASE [IF NOT EXISTS] db_name [create_specification] ... create_specification: [DEFAULT] CHARACTER SET [=] charset_name | [DEFAULT] COLLATE [=] collation_name
例如:建立数据库,并指定默认字符集为UTF-8
SHOW CHARACTER SET;//查看支持的字符集 CREATE DATABASE mydb CHARACTER SET='utf8'; //建立数据库mydb,并指定字符集为utf-8
查看数据库建立信息
MariaDB [(none)]> SHOW CREATE DATABASE mydb; +----------+---------------------------------------------------------------+ | Database | Create Database | +----------+---------------------------------------------------------------+ | mydb | CREATE DATABASE `mydb` /*!40100 DEFAULT CHARACTER SET utf8 */ | +----------+---------------------------------------------------------------+ 1 row in set (0.00 sec)
`
修改数据库
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_nam 修改数据库mydb的字符集为utf-16: MariaDB [(none)]> ALTER DATABASE mydb CHARACTER SET = utf16; Query OK, 1 row affected (0.00 sec)
删除数据库
DROP {DATABASE | SCHEMA} [IF EXISTS] db_name 删除数据库很是的。。。快!因此呢,想好再回车。 MariaDB [(none)]> DROP DATABASE IF EXISTS mydb; Query OK, 0 rows affected (0.00 sec) 设定数据库默认字符集 只须要在my.cnf中加入此指令便可,在[mysqld]下: character_set_server = utf8
建立表
CREATE [OR REPLACE] [TEMPORARY] TABLE [IF NOT EXISTS] tbl_name (create_definition,...) [table_options ]... [partition_options]
比较基础的就是表定义选项了,以下:
column_definition: data_type [NOT NULL | NULL] [DEFAULT default_value | (expression)] [AUTO_INCREMENT] [UNIQUE [KEY] | [PRIMARY] KEY] [INVISIBLE] [{WITH|WITHOUT} SYSTEM VERSIONING] [COMMENT 'string'] [COLUMN_FORMAT {FIXED|DYNAMIC|DEFAULT}] [reference_definition]
例如:建立User表,有4个字段,分别为:ID、用户名、密码、登陆时间
MariaDB [mydb]> CREATE TABLE IF NOT EXISTS user( -> id INT AUTO_INCREMENT PRIMARY KEY, -> username VARCHAR(10) NOT NULL, -> password VARCHAR(32) NOT NULL, -> logintime TIMESTAMP NOT NULL);
查看表
在Mysql中,可使用DESCRIBE table_name;来查看表的定义,DESCRIBE能够缩写为DESC,以下:
MariaDB [mydb]> DESC user; +-----------+-------------+------+-----+-------------------+-----------------------------+ | Field | Type | Null | Key | Default | Extra | +-----------+-------------+------+-----+-------------------+-----------------------------+ | id | int(11) | NO | PRI | NULL | auto_increment | | username | varchar(10) | NO | | NULL | | | password | varchar(32) | NO | | NULL | | | logintime | timestamp | NO | | CURRENT_TIMESTAMP | on update CURRENT_TIMESTAMP | +-----------+-------------+------+-----+-------------------+-----------------------------+ 4 rows in set (0.03 sec)
固然,咱们也可使用SHOW CREATE TABLE table_name;来查看定义表时所使用的命令
MariaDB [mydb]> SHOW CREATE TABLE user; +-------+----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ | Table | Create Table | +-------+----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ | user | CREATE TABLE `user` ( `id` int(11) NOT NULL AUTO_INCREMENT, `username` varchar(10) NOT NULL, `password` varchar(32) NOT NULL, `logintime` timestamp NOT NULL DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP, PRIMARY KEY (`id`) ) ENGINE=InnoDB DEFAULT CHARSET=utf16 | //这里能够看到这张表使用的存储引擎和字符集 +-------+----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ 1 row in set (0.00 sec)
修改表
1.为user表添加一个新的字段registtime来记录用户的注册时间
MariaDB [mydb]> ALTER TABLE user ADD COLUMN registtime TIMESTAMP NOT NULL AFTER logintime;
因此,添加字段的格式能够为以下:
ALTER TABLE table_name ADD [COLUMN] col_name column_definition [FIRST | AFTER col_name ]
其中,FIRST与AFTER是指定新添加的字段在什么位置,FIRST表明第一列,而AFTER指示在某一列以后
2.为user表修改一个字段,把刚才新加的registtime字段的数据类型修改成datatime类型
MariaDB [mydb]> ALTER TABLE user MODIFY COLUMN registtime DATETIME; 命令格式以下: ALTER TABLE table_name MODIFY [COLUMN] col_name column_definition [FIRST | AFTER col_name]
`
3.修改字段registtime为createtime
MariaDB [mydb]> ALTER TABLE user CHANGE registtime createtime DATETIME NOT NULL; 命令格式以下,须要从新定义下新的字段: ALTER TABLE table_name CHANGE [COLUMN] old_col_name new_col_name column_definition [FIRST|AFTER col_name]
4.删除这个createtime字段,全部行的这个字段的数据也会被删除
MariaDB [mydb]> ALTER TABLE user DROP COLUMN createtime;
5.修改表名user为users
MariaDB [mydb]> ALTER TABLE user RENAME TO users;
6.修改数据表的字符集
MariaDB [mydb]> ALTER TABLE users DEFAULT CHARACTER SET=utf8;
7.修改数据表的存储引擎,有关存储引擎这方面暂时了解的不深,因此这条命令….嗯,你懂得。
MariaDB [mydb]> ALTER TABLE users ENGINE=MyISAM;
会致使数据重建的…因此,谨慎修改
8.修改数据表的排序字段
MariaDB [mydb]> ALTER TABLE users ORDER BY logintime;
删除一个数据表
与删除数据库同样,谨慎按下回车键
MariaDB [mydb]> DROP TABLE IF EXISTS users;
数据类型->是一类具备相同属性、相同性质的数据分类的抽象。
例如:
字符串,就是一个个的字符组成一串就叫字符串…在计算机中能够划分子串、能够在字符串末尾添加新的字符,而这类操做就只能操做字符串数据,而不能操做整数。
数字型,咱们最常接触的阿拉伯数字,能够进行算数运算、逻辑运算等操做
MySQL支持多种类型,大体能够分为三类:数值、日期/时间和字符串(字符)类型。
数值类型
1.对于整数类型,能够限制其长度,格式以下:
整数类型[(M)] [SIGNED | UNSIGNED | ZEROFILL]
M为数字的位数,例如TINYINT(3),就只能存储三位数,位数应不超过其所能表示的范围
SIGNED:默认即为有符号数
UNSIGNED:指定为无符号数
ZEROFILL:当不知足M位时,其前用0填充,且为变为无符号数
2.对于浮点数,可限制其总体位数和小数点后位数
(FLOAT|DOUBLE)[(M,D)] [SIGNED | UNSIGNED | ZEROFILL]
M为总的位数,D为小数点后的位数
ZEROFILL对于浮点型,起做用等同于UNSIGNED
MariaDB [mydb]> DESC t1; +-------+--------------+------+-----+---------+-------+ | Field | Type | Null | Key | Default | Extra | +-------+--------------+------+-----+---------+-------+ | c1 | float(5,2) | YES | | NULL | | | c2 | double(10,3) | YES | | NULL | | +-------+--------------+------+-----+---------+-------+ 2 rows in set (0.00 sec) MariaDB [mydb]> INSERT INTO t1 VALUES(23.5,12.34566777); Query OK, 1 row affected (0.01 sec) MariaDB [mydb]> SELECT * FROM t1; //这里能够看到,在其后补了0 +-------+--------+ | c1 | c2 | +-------+--------+ | 23.50 | 12.346 | +-------+--------+ 1 row in set (0.00 sec)
格式缩写: 日期时间格式,除了标准的格式之外还支持松散的格式。
建立测试表,结构以下:
MariaDB [mydb]> desc datetable; +-------+-----------+------+-----+-------------------+-----------------------------+ | Field | Type | Null | Key | Default | Extra | +-------+-----------+------+-----+-------------------+-----------------------------+ | c1 | date | YES | | NULL | | | c2 | time | YES | | NULL | | | c3 | datetime | YES | | NULL | | | c4 | timestamp | NO | | CURRENT_TIMESTAMP | on update CURRENT_TIMESTAMP | +-------+-----------+------+-----+-------------------+-----------------------------+
对于DATE型:YY-MM-DD、YYMMDD、YYYY/MM/DD
MariaDB [mydb]> INSERT INTO datetable(c1) VALUES('2018-01-01'),('18-01-01'), -> ('180101'),('2018/01/01'),(180101); Query OK, 5 rows affected (0.01 sec) Records: 5 Duplicates: 0 Warnings: 0 MariaDB [mydb]> SELECT c1 FROM datetable; +------------+ | c1 | +------------+ | 2018-01-01 | | 2018-01-01 | | 2018-01-01 | | 2018-01-01 | | 2018-01-01 | +------------+ 5 rows in set (0.00 sec)
对于TIME型:'D HH:MM:SS'、'HH:MM:SS'、'HH:MM'、'D HH:MM'、'D HH', 'SS'、 'HHMMSS'
D表明天,即TIME+D*24
MariaDB [mydb]> INSERT INTO datetable(c2) VALUES -> ('12:20:20'),('1 12:20:20'), -> ('12:20'),('1 12'),('20'),('122020'), -> (122020); Query OK, 7 rows affected (0.03 sec) Records: 7 Duplicates: 0 Warnings: 0 MariaDB [mydb]> SELECT c2 FROM datetable; +----------+ | c2 | +----------+ | 12:20:20 | | 36:20:20 | | 12:20:00 | | 36:00:00 | | 00:00:20 | | 12:20:20 | | 12:20:20 | +----------+ 7 rows in set (0.00 sec)
对于DATETIME和TIMESTAMP这两种格式,便是上面时间简写格式的缩写,例如:
20180101122020 -> '2018-01-01 12:20:20'
对于TIMESTAMP这种格式,比较经常使用吧应该说,其存储的是自'1970-01-01 00:00:00'到存储时间的毫秒数,其默认值能够为CURRENT_TIMESTAMP或其同义词:
CURRENT_TIMESTAMP(), NOW(), LOCALTIME, LOCALTIME(), LOCALTIMESTAMP,LOCALTIMESTAMP()
字符串类型
CHAR和VARCHAR类型相似,但它们保存和检索的方式不一样。它们的最大长度和是否尾部空格被保留等方面也不一样。在存储或检索过程当中不进行大小写转换。
BINARY和VARBINARY类相似于CHAR和VARCHAR,不一样的是它们包含二进制字符串而不要非二进制字符串。也就是说,它们包含字节字符串而不是字符字符串。这说明它们没有字符集,而且排序和比较基于列值字节的数值值。
BLOB是一个二进制大对象,能够容纳可变数量的数据:
有4种BLOB类型:TINYBLOB、BLOB、MEDIUMBLOB和LONGBLOB。它们只是可容纳值的最大长度不一样。
有4种TEXT类型:TINYTEXT、TEXT、MEDIUMTEXT和LONGTEXT。这些对应4种BLOB类型,有相同的最大长度和存储需求。
其余类型
枚举型:ENUM('value1','value2',…)
存储字节:因其存储的是元素编号,因此对于0-255个元素,只占一个字节,而255-65535则占两个元素
INSERT语句格式:
INSERT [LOW_PRIORITY | DELAYED | HIGH_PRIORITY] [IGNORE] [INTO] tbl_name [PARTITION (partition_list)] [(col,...)] {VALUES | VALUE} ({expr | DEFAULT},...),(...),... [ ON DUPLICATE KEY UPDATE col=expr [, col=expr] ... ]
表结构以下:
MariaDB [mydb]> DESC user; +----------+-------------+------+-----+---------------------+----------------+ | Field | Type | Null | Key | Default | Extra | +----------+-------------+------+-----+---------------------+----------------+ | id | int(11) | NO | PRI | NULL | auto_increment | | username | varchar(10) | NO | | NULL | | | password | varchar(10) | NO | | NULL | | | regtime | timestamp | NO | | CURRENT_TIMESTAMP | | | logtime | timestamp | NO | | 0000-00-00 00:00:00 | | | logip | varchar(20) | YES | | NULL | | +----------+-------------+------+-----+---------------------+----------------+ 6 rows in set (0.01 sec)
MariaDB [mydb]> INSERT INTO user VALUES(1,'test','test',NOW(),NOW(),'127.0.0.1');
由于在不少时候有些值是默认的,因此咱们能够指定为哪些列插入数据,而其余列则使用默认值,以下:
MariaDB [mydb]> INSERT INTO user(username,password) VALUES('test2','test2');
一样的,插入特定列数据还能够这样写:
MariaDB [mydb]> INSERT INTO user SET username='test3',password='test3';
这样就仅仅插入了用户名和密码,其余值则使用默认。
MariaDB [mydb]> SELECT * FROM user; +----+----------+----------+---------------------+---------------------+-----------+ | id | username | password | regtime | logtime | logip | +----+----------+----------+---------------------+---------------------+-----------+ | 1 | test | test | 2018-02-24 15:43:41 | 2018-02-24 15:43:41 | 127.0.0.1 | | 2 | test2 | test2 | 2018-02-24 15:45:16 | 0000-00-00 00:00:00 | NULL | | 3 | test3 | test3 | 2018-02-24 15:46:56 | 0000-00-00 00:00:00 | NULL | +----+----------+----------+---------------------+---------------------+-----------+ 3 rows in set (0.00 sec)
不少时候咱们会有使用一条INSERT语句向数据表插入多条记录的需求,就能够这样写:
MariaDB [mydb]> INSERT INTO user(username,password) VALUES('test4','test4'),('test5', -> 'test5');
莫名其妙的优先级?
当使用的存储引擎(MyISAM, MEMORY, MERGE)使用表级锁的时候,可使用
LOW_PRIORITY| HIGH_PRIORITY这两个关键字: 当使用LOW_PRIORITY关键字时,当没有客户端再读取该表时才写入数据。 当使用HIGH_PRIORITY时,INSERT语句具备同SELECT语句同样的优先级。(默认策略)
因此,当INSERT语句执行前有SELECT语句执行时,INSERT阻塞并等待SELECT读取完毕,但此时,若是有SELECT再次进入调度,则SELECT被阻塞(按理读锁能够直接读)但此时由于INSERT语句跟SELECT语句有一样的优先级,因此SELECT要等INSERT结束才能执行,因此INSERT能够加LOW_PRIORITY来优化读取速度。
这里慢慢看吧,对锁这个东西懂的不是不少。
UPDATE语句语法以下:
UPDATE [LOW_PRIORITY] [IGNORE] table_reference [PARTITION (partition_list)] SET col1={expr1|DEFAULT} [,col2={expr2|DEFAULT}] ... [WHERE where_condition] [ORDER BY ...] [LIMIT row_count]
更新全部
当不使用WHERE子句约束选择条件的时候,则更新全部数据,例如,修改user表全部记录的登录时间为如今:
MariaDB [mydb]> UPDATE user SET logtime=NOW(); Query OK, 5 rows affected (0.01 sec) Rows matched: 5 Changed: 5 Warnings: 0
更新最先注册的三我的的登陆IP为127.0.0.1
MariaDB [mydb]> UPDATE user SET logip='127.0.0.1' ORDER BY regtime LIMIT 3;
ORDER BY语句能够用于SELECT UPDATE DELETE等,是指示该表输出、删除、更新时遵循该表哪一个字段排列。
例如以上,ORDER BY regtime就是根据注册时间来正序排列更新,而且配合LIMIT语句只更新了前三行。
再使用DESC来指定倒叙排列,例如:ORDER BY regtime DESC
LIMIT语句:用于限制查询结果的条数。
用法:
LIMIT[位置偏移量,]行数
第一行从0开始,因此如下:
SELECT * FROM user LIMIT 2,2; //从第3行开始,取两行,即取第三、4条记录。 使用WHERE语句选中特定行更新 MariaDB [mydb]> UPDATE user SET logip='192.168.1.2' WHERE username='test2';
由于WHERE子句也有不少东西,这里就不过多贴内容了。
LOW_PRIORITY:这个跟INSERT的LOW_PRIORITY是同样的。
REPLACE语句
MariaDB [mydb]> REPLACE INTO user VALUES(1,'test111','test111',NOW(),NOW(),'192.168.1.1');
以上这条语句是MariaDB的扩展SQL,至关于删除重复(主键或惟一索引)的记录再添加新的记录。
好像有点鸡肋?….
DELETE语语法: DELETE [LOW_PRIORITY] [QUICK] [IGNORE] FROM tbl_name [PARTITION (partition_list)] [WHERE where_condition] [ORDER BY ...] [LIMIT row_count] [RETURNING select_expr [, select_expr ...]]
删除全部数据
不使用WHERE语句来约束条件时,则删除全部数据,以下:
MariaDB [mydb]> DELETE FROM user;
使用WHERE语句约束选中行
MariaDB [mydb]> DELETE FROM user WHERE username='test1';
连接 :
mariadb编译安装脚本 : http://blog.51cto.com/xiaogongju/1947616
mariadb之查询及存储引擎 : http://blog.51cto.com/11551196/1872976
mariadb——多种方式部署及多实例部署 :http://blog.51cto.com/11010461/2125170
Mariadb半同步复制,主从复制与双主复制 荐 : http://blog.51cto.com/11010461/2128561
maraidb高可用——MHA : http://blog.51cto.com/11010461/2130309
mariadb复制——加密复制 : http://blog.51cto.com/11010461/2130127
经常使用的几种mariadb备份还原手段——上篇 : http://blog.51cto.com/11010461/2129985
经常使用的几种mariadb备份还原手段——下篇 : http://blog.51cto.com/11010461/2130009
mariadb之查询及存储引擎 : http://blog.51cto.com/11551196/1872976
Mysql(Mariadb)总结1 - 基础知识 : https://www.jianshu.com/p/4dac089b958a
MySQL(Mariadb)总结2 - SQL知识点汇总 : https://www.jianshu.com/p/eed675ebf73f
MySQL(Mariadb)总结3 - 用户和权限管理,查询缓存 : https://www.jianshu.com/p/429822c142b0
MySQL(Mariadb)总结4 - MySQL 索引和explain : https://www.jianshu.com/p/6f3be883a12d
MySQL(Mariadb)总结5 - MySQL(MariaDB)存储引擎 : https://www.jianshu.com/p/251e950c61d6
MySQL(Mariadb)总结6 - 事务 : https://www.jianshu.com/p/257c8a7e62f9
MySQL(Mariadb)总结7 - 日志文件 : https://www.jianshu.com/p/3ac61ee26ad6
MySQL(Mariadb)总结8 - 备份与恢复 : https://www.jianshu.com/p/90f3ec8853e6
MySQL(Mariadb)总结9 - 主从复制及其实现 : https://www.jianshu.com/p/7b2e318dacd9
MySQL(Mariadb)总结 - 目录 : https://www.jianshu.com/p/493658572519
MYSQL双主--主-主复制 (MariaDB10.0.26) : http://blog.51cto.com/jdonghong/1887569
MYSQL主从复制与读写分离(MariaDB) 荐 : http://blog.51cto.com/jdonghong/1887164
MYSQL备份数据库和还原数据库操做 : http://blog.51cto.com/jdonghong/1887144
限制MYSQL从服务器为只读状态(centos 6.6) : http://blog.51cto.com/jdonghong/1886994
MySQL/MariaDB基于MMM实现读写分离及高可用 : http://blog.51cto.com/scholar/1664551
MySQL/MariaDB数据库基于SSL实现主从复制 荐 : http://blog.51cto.com/scholar/1664009
CentOS 7安装MariaDB 10详解以及相关配置 :https://www.linuxidc.com/Linux/2018-03/151403.htm
CentOS 7 源码编译MariaDB : https://www.cnblogs.com/bigdevilking/p/9452686.html
FTP基于PAM和MySQL/MariaDB实现虚拟用户访问控制 荐 : http://blog.51cto.com/scholar/1636190
企业私有云之mariadb集群高可用 荐 :http://blog.51cto.com/dl528888/1865285
Mariadb半同步复制,主从复制与双主复制荐 : http://blog.51cto.com/11010461/2128561
MariaDB10.3 系统版本表 有效防止数据丢失荐 : http://blog.51cto.com/hcymysql/2121248
企业私有云之mariadb集群高可用 荐 : http://blog.51cto.com/dl528888/1865285
企业私有云之rabbitmq高可用 荐 : http://blog.51cto.com/dl528888/1864895