资料

http://www.cnblogs.com/lyhabc/p/3691555.html

http://www.cnblogs.com/lyhabc/p/3691555.html

MariaDb

官网: https://mariadb.org/

安装地址: https://downloads.mariadb.org/mariadb/repositories

1. MySql .net Connector 在执行完命令后,关闭连接, 字符串中的 Password 会被清空。 设置带有 Password  的新字符串,连接字符串也不显示,但可以打开。

2. 我使用的是 HeidiSql客户端, 在使用 group_concat 函数时报错, 调试发现, group_concat 函数后面有一个空格,如果去除空格,则正确。不知道是客户端的原因,还是MySql的原因。

3. MySqlWorkbench 自定义快捷键: http://blog.csdn.net/stableboy/article/details/45887035

4. 国内镜像:

5. 连接: mysql -uroot -p1234

Windows安装

安装多份实例 , 拷贝多份 my.ini 目录。运行:

C:\Program Files\MySQL\MySQL Server 5.7\bin>mysqld --install MySql57_2 --defaults-file="C:\ProgramData\MySQL\MySQL Server 5.7_2\my.ini"

linux设置

查看状态: service mysql status

启动服务: service mysql start

对于mariadb新版: systemctl restart mariadb.service

转移数据库

http://blog.csdn.net/renfufei/article/details/17616549

查看配置

查找位置

which mysqld

查看配置

/usr/sbin/mysqld --verbose  --help

找出配置文件地址:

/usr/sbin/mysqld --verbose --help  | grep -A1 'Default options'

-A1  显示查找到该行以及该行之后的 after 1行。

大小写

设置MySql 区分大小写:http://dev.mysql.com/doc/refman/5.7/en/server-system-variables.html#sysvar_lower_case_table_names

  1)找到Mysql服务的配置文件,它在服务启动参数中: --defaults-file  ,默认是:C:\ProgramData\MySQL\MySQL Server 5.6\my.ini

  2)在my.ini,在  [mysqld] 下添加: lower_case_table_names=2

  3)重启MySql服务。

0:存储为指定,大小写比较。 特殊情况:Windows,Mac 不能指定为0

1: 存储为小写。

2:存储为给定的名称,但使用小写比较。

CentOs7+mariadb10.0 路径: /etc/my.cnf.d/server.cnf

Ubuntu14+ mariadb10.1 路径: /etc/mysql/my.conf

设置远程连接

参考:http://www.cnblogs.com/24la/p/mariadb-remoting-access.html

在本地打开mysql,执行:

use mysql;

select * from user\G;  #查看 user = 'root' 的记录。 \G 表示一行一段的展示,方便阅读。

GRANT ALL PRIVILEGES ON *.* to 'root'@'%' identified by '123456';

flush privileges;

如果上面的办法不行(影响行数为0),则可以修改配置文件。把 my.conf 里的 bind-address一行注释掉。

添加用户

程序执行时的用户及权限:

CREATE USER 'testuser'@'%' IDENTIFIED BY '1234';
GRANT USAGE ON *.* TO 'testuser'@'%';
GRANT SELECT, EXECUTE,CREATE,  CREATE TEMPORARY TABLES, DELETE, INSERT,  UPDATE, LOCK TABLES ON `test`.* TO 'testuser'@'%' WITH GRANT OPTION;
FLUSH PRIVILEGES;
SHOW GRANTS FOR 'testuser'@'%';

客户端管理者的权限:

CREATE USER 'testuser'@'%' IDENTIFIED BY '1234';
GRANT USAGE ON *.* TO 'testuser'@'%';
GRANT SELECT, EXECUTE, SHOW VIEW, ALTER, ALTER ROUTINE, CREATE, CREATE ROUTINE, CREATE TEMPORARY TABLES, CREATE VIEW, DELETE, DROP, EVENT, INDEX, INSERT, REFERENCES, TRIGGER, UPDATE, LOCK TABLES ON `test`.* TO 'testuser'@'%' WITH GRANT OPTION;
FLUSH PRIVILEGES;
SHOW GRANTS FOR 'testuser'@'%';

修改密码

先看用户在哪些主机上定义。

SELECT `user`, `host`  FROM `mysql`.`user`;

SET PASSWORD FOR 'root'@'%' = PASSWORD('lwl417');

SET PASSWORD FOR 'root'@'localhost' = PASSWORD('lwl417');
FLUSH PRIVILEGES;

编码

MySql编码最奇葩,标准编码: utf8mb4

collation:  utf8mb4_general_ci

characterset: utf8mb4

非主键更新删除报错

http://jingyan.baidu.com/article/e5c39bf58ed69239d76033a4.html

执行:

SET SQL_SAFE_UPDATES = 0;

备份还原

我没有找到好的备份还原方法,MySql 这一点做的实在太差。

备份分为两部分: 一是备份脚本,包含表结构,函数,存储过程,   二是备份Insert数据.

默认情况下,导出数据库和 Insert 数据 .不包含存储过程和函数 .

一. 脚本:

mysqldump --host=server --user=root --password=1234 --no-data  --routines    DataBaseName > FileName

-d, --no-data   是不生成Insert语句

-R, --routines 是包含存储过程和函数

二. 仅 insert语句.

mysqldump -u root -t   DataBaseName > FileName

-t, --no-create-info , 在默认的基础上,去除 create sql , 就剩 insert sql 了.

恢复:

mysql -uroot -p"db_password" -f dbname < backup.sql

-f 参数表示在导出过程中忽略出现的SQL错误

主从 数据同步设置

http://369369.blog.51cto.com/319630/790921/

快速复制数据库


mysqldump -h ${源服务器IP} -uroot -p123456 ${源数据库} --add-drop-table | mysql -h ${目标数据库IP} -u root -p123456 ${目标数据库}

如果要忽略某些表, mysql dump 时添加:
--ignore-table=database.table1 --ignore-table=database.table2
https://blog.csdn.net/whatlookingfor/article/details/51942566
 

语法

1.函数模板:

 delimiter  $$

CREATE function  CompareStr (FirstVal varchar(1000),SecondVal varchar(1000) )
returns int
begin if ( FirstVal is null ) then
return -1 ;
end if; if ( SecondVal is null ) then
return -1 ;
end if; set FirstVal = lower(rtrim(ltrim(FirstVal)));
set SecondVal = lower(rtrim(ltrim(SecondVal))); if (FirstVal = SecondVal ) then
return 0;
else
return 1;
end if; end
$$
DELIMITER ;

If ( condition) then   statement  elseif ( condition ) then statement  end if ; 最后的 ; 一定要有。

2.存储过程模板

DELIMITER $$
CREATE PROCEDURE `S_CreateVarTable`(VarTable varchar(50) , VarName varchar(50), VarValue varchar(9) )
label_pro:
begin set @CorpTable = replace(VarTable , concat( '{' , VarName ,'}' ), concat('{' , VarValue , '}')) ; if exists (select 1 from information_schema.Tables where table_schema= database() and table_Name = @CorpTable ) then
leave label_pro;
end if; set @sql = N'
create table `{InstanceTable}` (
select *
from `{VarTable}`
limit 0,0 );
'; set @sql = replace(@sql,'{VarTable}', VarTable) ;
set @sql = replace(@sql,'{InstanceTable}', @CorpTable) ; prepare smt from @sql ;
execute smt ; end$$
DELIMITER ;

3. 修改自增种子值: alter table users AUTO_INCREMENT=10000;

4. 计算列:

https://mariadb.com/kb/en/mariadb/virtual-computed-columns/

http://www.linuxidc.com/Linux/2016-02/128066.htm

在创建列类型后面添加:  GENERATED ALWAYS AS ($表达式$)

如果是计算列, MySql 有两种方式:Virtual 和 Stored。  MariaDb 称为: Virtual 和 Presistent

5. 血的教训.  分页必须要有 order by

诡异的情况:   group by  broker_id , dealer_id   limit #{take} , #{skip}  获取所有的数据时, 出现重复数据.

MySql学习(MariaDb)的更多相关文章

  1. MySQL学习分享--Thread pool实现

    基于<MySQL学习分享--Thread pool>对Thread pool架构设计的详细了解,本文主要对Thread pool的实现进行分析,并根据Mariadb和Percona提供的开 ...

  2. MySQL学习基础

    MySQL是被Sun公司收购了,所以也有热咖啡图标,不过MySQL的作者后来又做了一个MariaDB,小海豚图标,也很好用. MySQL学习: <MySQL网络数据库设计与开发>(电子工业 ...

  3. 我的MYSQL学习心得(一) 简单语法

    我的MYSQL学习心得(一) 简单语法 我的MYSQL学习心得(二) 数据类型宽度 我的MYSQL学习心得(三) 查看字段长度 我的MYSQL学习心得(四) 数据类型 我的MYSQL学习心得(五) 运 ...

  4. 我的MYSQL学习心得(二) 数据类型宽度

    我的MYSQL学习心得(二) 数据类型宽度 我的MYSQL学习心得(一) 简单语法 我的MYSQL学习心得(三) 查看字段长度 我的MYSQL学习心得(四) 数据类型 我的MYSQL学习心得(五) 运 ...

  5. 我的MYSQL学习心得(三) 查看字段长度

    我的MYSQL学习心得(三) 查看字段长度 我的MYSQL学习心得(一) 简单语法 我的MYSQL学习心得(二) 数据类型宽度 我的MYSQL学习心得(四) 数据类型 我的MYSQL学习心得(五) 运 ...

  6. 我的MYSQL学习心得(四) 数据类型

    我的MYSQL学习心得(四) 数据类型 我的MYSQL学习心得(一) 简单语法 我的MYSQL学习心得(二) 数据类型宽度 我的MYSQL学习心得(三) 查看字段长度 我的MYSQL学习心得(五) 运 ...

  7. 我的MYSQL学习心得(五) 运算符

    我的MYSQL学习心得(五) 运算符 我的MYSQL学习心得(一) 简单语法 我的MYSQL学习心得(二) 数据类型宽度 我的MYSQL学习心得(三) 查看字段长度 我的MYSQL学习心得(四) 数据 ...

  8. 我的MYSQL学习心得(六) 函数

    我的MYSQL学习心得(六) 函数 我的MYSQL学习心得(一) 简单语法 我的MYSQL学习心得(二) 数据类型宽度 我的MYSQL学习心得(三) 查看字段长度 我的MYSQL学习心得(四) 数据类 ...

  9. 我的MYSQL学习心得(七) 查询

    我的MYSQL学习心得(七) 查询 我的MYSQL学习心得(一) 简单语法 我的MYSQL学习心得(二) 数据类型宽度 我的MYSQL学习心得(三) 查看字段长度 我的MYSQL学习心得(四) 数据类 ...

  10. 我的MYSQL学习心得(八) 插入 更新 删除

    我的MYSQL学习心得(八) 插入 更新 删除 我的MYSQL学习心得(一) 简单语法 我的MYSQL学习心得(二) 数据类型宽度 我的MYSQL学习心得(三) 查看字段长度 我的MYSQL学习心得( ...

随机推荐

  1. POJ 3041 Asteroids 二分图匹配

    以行列为点建图,每个点(x,y) 对应一条边连接x,y.二分图的最小点覆盖=最大匹配 //#pragma comment(linker, "/STACK:1024000000,1024000 ...

  2. Laravel 学习笔记 —— 神奇的服务容器 [转]

    容器,字面上理解就是装东西的东西.常见的变量.对象属性等都可以算是容器.一个容器能够装什么,全部取决于你对该容器的定义.当然,有这样一种容器,它存放的不是文本.数值,而是对象.对象的描述(类.接口)或 ...

  3. Linux中的工作管理(Job Control )

    以前使用Linux老是会不小心按下Ctrl + z,然后就出现看不懂的情况,以为程序突然就没了,今天专门研究了下Linux下的几个快捷键和工作管理. 其中找到一篇很不错的文章,大部分是里面转载的. 原 ...

  4. SQL:无法解决 equal to 操作的排序规则冲突。

    更改存储过程的时候,在SQL中出现了 “无法解决 equal to 操作的排序规则冲突”错误,网上搜之,发现是表之间元素创建时排序规则不同(一个是collate Chinese_PRC_CI_AI_W ...

  5. Ajax Step By Step4

    第四,[$.ajax()] $.ajax()是所有 ajax 方法中最底层的方法,所有其他方法都是基于$.ajax()方法的封装.这个方法只有一个参数,传递一个各个功能键值对的对象. $.ajax() ...

  6. 1220 - Mysterious Bacteria--LightOj1220 (gcd)

    http://lightoj.com/volume_showproblem.php?problem=1220 题目大意: 给你一个x,求出满足 x=b^p, p最大是几. 分析:x=p1^a1*p2^ ...

  7. CAD二次开发---导入外部文件中的块并输出预览图形(五)

    思路: 1)首先要定义一个数据库对象来表示包含块的文件,改数据库对象会被加载到内存中,但不会被显示在CAD窗口中. 2)调用Database类的ReadDwgFile函数将外部文件DWG文件读入到新创 ...

  8. 我为什么要拒绝Ctrl+C和Ctrl+V?

    工作中避免不了会去参考别人的思路和实现(代码),因此浏览博文和相关网站成了日常活动.在这一过程中,James看到很多博文都是满篇的代码,而没有相应的分析(文字描述或者流程图). 对于上述这种情况,Ja ...

  9. Echarts给柱状图每一条顶部都添加数值

    在 series中添加 itemStyle : { normal: {label : {show: true}}}, 不过目测要把markPoint等去掉,不然最大值和最小值会和label冲突,应该有 ...

  10. JavaScript常用函数之Eval()使用

    eval() 功能:首先解释Javascript代码  然后执行它 用法:Eval(codeString) codeString是包含有javascript语句的字符串,在eval之后使用Javasc ...