MySql学习(MariaDb)
资料
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)的更多相关文章
- MySQL学习分享--Thread pool实现
基于<MySQL学习分享--Thread pool>对Thread pool架构设计的详细了解,本文主要对Thread pool的实现进行分析,并根据Mariadb和Percona提供的开 ...
- MySQL学习基础
MySQL是被Sun公司收购了,所以也有热咖啡图标,不过MySQL的作者后来又做了一个MariaDB,小海豚图标,也很好用. MySQL学习: <MySQL网络数据库设计与开发>(电子工业 ...
- 我的MYSQL学习心得(一) 简单语法
我的MYSQL学习心得(一) 简单语法 我的MYSQL学习心得(二) 数据类型宽度 我的MYSQL学习心得(三) 查看字段长度 我的MYSQL学习心得(四) 数据类型 我的MYSQL学习心得(五) 运 ...
- 我的MYSQL学习心得(二) 数据类型宽度
我的MYSQL学习心得(二) 数据类型宽度 我的MYSQL学习心得(一) 简单语法 我的MYSQL学习心得(三) 查看字段长度 我的MYSQL学习心得(四) 数据类型 我的MYSQL学习心得(五) 运 ...
- 我的MYSQL学习心得(三) 查看字段长度
我的MYSQL学习心得(三) 查看字段长度 我的MYSQL学习心得(一) 简单语法 我的MYSQL学习心得(二) 数据类型宽度 我的MYSQL学习心得(四) 数据类型 我的MYSQL学习心得(五) 运 ...
- 我的MYSQL学习心得(四) 数据类型
我的MYSQL学习心得(四) 数据类型 我的MYSQL学习心得(一) 简单语法 我的MYSQL学习心得(二) 数据类型宽度 我的MYSQL学习心得(三) 查看字段长度 我的MYSQL学习心得(五) 运 ...
- 我的MYSQL学习心得(五) 运算符
我的MYSQL学习心得(五) 运算符 我的MYSQL学习心得(一) 简单语法 我的MYSQL学习心得(二) 数据类型宽度 我的MYSQL学习心得(三) 查看字段长度 我的MYSQL学习心得(四) 数据 ...
- 我的MYSQL学习心得(六) 函数
我的MYSQL学习心得(六) 函数 我的MYSQL学习心得(一) 简单语法 我的MYSQL学习心得(二) 数据类型宽度 我的MYSQL学习心得(三) 查看字段长度 我的MYSQL学习心得(四) 数据类 ...
- 我的MYSQL学习心得(七) 查询
我的MYSQL学习心得(七) 查询 我的MYSQL学习心得(一) 简单语法 我的MYSQL学习心得(二) 数据类型宽度 我的MYSQL学习心得(三) 查看字段长度 我的MYSQL学习心得(四) 数据类 ...
- 我的MYSQL学习心得(八) 插入 更新 删除
我的MYSQL学习心得(八) 插入 更新 删除 我的MYSQL学习心得(一) 简单语法 我的MYSQL学习心得(二) 数据类型宽度 我的MYSQL学习心得(三) 查看字段长度 我的MYSQL学习心得( ...
随机推荐
- 23种oop设计模式定义
创建型模式 单例模式:确保一个类只有一个实例,而且自行实例化并向整个系统提供这个实现. 工厂模式:定义一个用于创建对象的接口,让子类决定将哪一个类实例化.工厂方法使一个类的实例化延迟到子类. 抽象 ...
- My安卓知识6--关于把项目从androidstudio工程转成eclipse工程并导成jar包
是这样,我在我的android项目中想实现zxing也就是二维码的一些功能,但是需要的一个源码工程是androidstudio工程,想把这个工程转成eclipse工程并导成jar包在我的项目中使用. ...
- js数组方法push pop shift unshift的返回值
push() 方法可向数组的末尾添加一个或多个元素,并返回新的长度. pop() 方法用于删除并返回数组的最后一个元素. unshift() 方法可向数组的开头添加一个或更多元素,并返回新的长度. s ...
- easy ui 零散技巧
1.Jquery带上下文查找: 格式:$(selector,context) 例如:$("input",window.document),查找当前文档下的说有input元素,也等价 ...
- Runloop 深入理解(转)
RunLoop 是 iOS 和 OSX 开发中非常基础的一个概念,这篇文章将从 CFRunLoop 的源码入手,介绍 RunLoop 的概念以及底层实现原理.之后会介绍一下在 iOS 中,苹果是如何利 ...
- C++基础知识易错点总结(1)
1. 在C++中,不能被重载的运算符有: sizeof . 成员运算符 .* 成员指针运算符 :: 作用域运算符 ?: 条件运算符 2. C++语言多态性:编译时多态和运行时多态: 编译时多态可通过函 ...
- PWM波控制舵机总结
文章转自:http://www.geek-workshop.com/thread-70-1-1.html 一.关于舵机: 舵机(英文叫Servo):它由直流电机.减速齿轮组.传感器和控制电路组成的一套 ...
- C语言的选择和循环上机题目(部分)
/*(1)某市不同车牌的出租车3公里的起步价和计费分别为:夏利7元/公里,3公里以外2.1元/公里:富康8元/公里,3公里以外2.4元/公里:桑塔纳9元,3公里以外2.7元/公里.编程:从键盘输入乘车 ...
- PHP那些非常有用却鲜有人知的函数
PHP里有非常丰富的内置函数,很多我们都用过,但仍有很多的函数我们大部分人都不熟悉,可它们却十分的有用.这篇文章里,我列举了一些鲜为人知但会让你眼睛一亮的PHP函数. levenshtein() 你有 ...
- PHP AJAX上传文件