一、MariaDB安装部署

tar zxvf  mariadb-5.5.31-linux-x86_64.tar.gz
mv mariadb-5.5.31-linux-x86_64 /usr/local/mysql //必需这样,很多脚本或可执行程序都会直接访问这个目录
groupadd mysql //增加 mysql 属组
useradd -g mysql mysql //增加 mysql 用户 并归于mysql 属组
chown mysql:mysql -Rf /usr/local/mysql // 设置 mysql 目录的用户及用户组归属。
chmod +x -Rf /usr/local/mysql //赐予可执行权限
cp /usr/local/mysql/support-files/my-medium.cnf /etc/my.cnf //复制默认mysql配置 文件到/etc目录
/usr/local/mysql/scripts/mysql_install_db --user=mysql //初始化数据库
cp /usr/local/mysql/support-files/mysql.server /etc/init.d/mysql //复制mysql服务程序 到系统目录
chkconfig mysql on //添加mysql 至系统服务并设置为开机启动
service mysql start //启动mysql vim /etc/profile //编辑profile,将mysql的可执行路径加入系统PATH
export PATH=/usr/local/mysql/bin:$PATH
source /etc/profile //使PATH生效。
mysqladmin -u root password 'yourpassword' //设定root账号及密码
mysql -u root -p //使用root用户登录mysql
use mysql //切换至mysql数据库。
select user,host,password from user; //查看系统权限
drop user ''@'localhost'; //删除不安全的账户
drop user root@'::1';
drop user [email protected];
select user,host,password from user; //再次查看系统权限,确保不安全的账户均被删除。
flush privileges; //刷新权限 1)修改字符集为UTF8
vi /etc/my.cnf
在[client]下面添加 default-character-set = utf8
在[mysqld]下面添加 character_set_server = utf8
2)增加错误日志
vi /etc/my.cnf
在[mysqld]下面添加:
log-error = /usr/local/mysql/log/error.log
general-log-file = /usr/local/mysql/log/mysql.log
3) 设置为不区分大小写,linux下默认会区分大小写。
vi /etc/my.cnf
在[mysqld]下面添加:
lower_case_table_name=1 修改完重启:#service mysql restart

MySQL安装部署(二)

1.解压tar包
cd /software
tar -xzvf mysql-5.6.21-linux-glibc2.5-x86_64.tar.gz
mv mysql-5.6.21-linux-glibc2.5-x86_64 mysql-5.6.21
2.添加用户与组
groupadd mysql
useradd -r -g mysql mysql
chown -R mysql:mysql mysql-5.6.21
3.安装数据库
su mysql
cd mysql-5.6.21/scripts
./mysql_install_db --user=mysql --basedir=/software/mysql-5.6.21 --datadir=/software/mysql-5.6.21/data
4.配置文件
cd /software/mysql-5.6.21/support-files
cp my-default.cnf /etc/my.cnf
cp mysql.server /etc/init.d/mysql
vim /etc/init.d/mysql #若mysql的安装目录是/usr/local/mysql,则可省略此步
修改文件中的两个变更值
basedir=/software/mysql-5.6.21
datadir=/software/mysql-5.6.21/data
5.配置环境变量
vim /etc/profile
export MYSQL_HOME="/software/mysql-5.6.21"
export PATH="$PATH:$MYSQL_HOME/bin"
source /etc/profile
6.添加自启动服务
chkconfig --add mysql
chkconfig mysql on
7.启动mysql
service mysql start
8.登录mysql及改密码与配置远程访问
mysqladmin -u root password 'your_password' #修改root用户密码
mysql -u root -p #登录mysql,需要输入密码
mysql>GRANT ALL PRIVILEGES ON *.* TO 'root'@'%' IDENTIFIED BY 'your_password' WITH GRANT OPTION; #允许root用户远程访问
mysql>FLUSH PRIVILEGES; #刷新权限

二、MySQL 字段类型

数字类型:
1、tinyint 1字节
2、smallint 2字节
3、mediumint 3字节
4、int 4字节
5、bigint 8字节
6、float 浮点数
7、double 双精度
8、decimal(总长度,小数位长度)
日期类型:
1、date 日期
2、datetime 日期时间
3、timestamp 时间戳
4、time 时间
字符类型:
1、char 不可变长度的字符串
2、varchar 可变字符串字符串
3、text 大文本类型
其他类型:
1、blob 二进制流类型
2、enum 枚举 插入值时 对应的值 必须在枚举中存在
3、set 一个字符串对象,可以有零或多个值,其值来自表创建时规定的允许的一列值。

三、数据库函数

字符串类
CHARSET(str) //返回字串字符集
CONCAT(str [,... ]) //连接字串
INSTR(str,substring) //返回substring首次在string中出现的位置,不存在返回0
LCASE(str) //转换成小写 oracle lower(字符串)
UCase(str)//转换为大写 oracle upper(字符串)
LEFT(str,length) //从string2中的左边起取length个字符 等价于 SUBSTRING(str,1,length);
SUBSTRING (str, position [,length ])//从str的position开始,取length个字符。
LENGTH(str) //string长度
LTRIM(str) //去除前端空格
RTRIM(str) //去除后端空格
STRCMP(str1,str2) //逐字符比较两字串大小,
REPLACE(str,search_str,replace_str) //在str中用replace_str替换search_str
LOAD_FILE(file_name) //从文件读取内容 例如 load_file(全路径);
LOCATE(substring,str [,start_position]) //同INSTR,但可指定开始位置,找到第一个字符串在第二个字符串的位置
LPAD(str,length,pad ) //重复用pad加在str开头,直到字串长度为length
RPAD(str,length,pad) //在str后用pad补充,直到长度为length
REPEAT(str,count) //重复count次
comress(string) //对字符串进行压缩
uncomress(被压缩的字符串) //对字符串进行解压缩
数学类
ABS(number) //绝对值
FLOOR(number) //向下取整 只保留整数位 不会四舍五入
CEILING(number) //向上取整 只要小数位大于0的值 整数位都进1
ROUND(number [,decimals ]) //四舍五入,decimals为小数位数]
FORMAT(number,decimal_places) //保留小数位数 第二个参数是必选的
RAND([seed]) //随机数
MOD(numerator,denominator ) //求余 等价于 数字%数字
BIN(decimal_number) //十进制转二进制
CONV(number,from_base,to_base) //进制转换
HEX(DecimalNumber) //转十六进制
LEAST(number, number2 [,..]) //求最小值
POWER(number,power ) //求指数
日期时间类
NOW() //当前时间
CURRENT_DATE() //当前日期 缩写 curdate()
CURRENT_TIME() //当前时间 缩写 curtime()
CURRENT_TIMESTAMP() //当前时间戳 定位到某一个时间点
//添加时间 第二个参数参数为1个值时 添加秒 参数为 时间:时间 添加小时和分钟
ADDTIME(date2,time_interval) //将time_interval加到date2
//formatCode的格式为 select date_format(now(),'%Y-%m-%d %H:%i:%s');
DATE_FORMAT(datetime,FormatCodes) //使用formatcodes格式显示datetime
DATEDIFF(date1,date2) //两个日期差 结果是天数
CONVERT_TZ(datetime2,fromTZ ,toTZ ) //转换时区
DATE(datetime) //返回datetime的日期部分
DATE_ADD(date2, INTERVAL d_value d_type) //在date2中加上日期或时间
DATE_SUB(date2, INTERVAL d_value d_type) //在date2上减去一个时间
DAY (date) //返回日期的天
DAYNAME (date) //英文星期
DAYOFWEEK (date) //星期(1-7) ,1为星期天
DAYOFYEAR (date) //一年中的第几天
EXTRACT (interval_name FROM date) //从date中提取日期的指定部分
MAKEDATE(year,day) //给出年及年中的第几天,生成日期串
MAKETIME(hour,minute,second) //生成时间串
MONTHNAME(date) //英文月份名
SEC_TO_TIME(seconds) //秒数转成时间
STR_TO_DATE(string,format) //字串转成时间,以format格式显示
TIMEDIFF(datetime1,datetime2 ) //两个时间差
TIME_TO_SEC(time) //时间转秒数]
WEEK(date_time [,start_of_week ]) //第几周
YEAR(datetime) //年份
DAYOFMONTH(datetime) //月的第几天
HOUR(datetime) //小时
LAST_DAY(date) //date的月的最后日期
MICROSECOND(datetime) //微秒
MONTH(datetime) //月
MINUTE(datetime) //分返回符号,正负或0
SQRT(number2) //开平方
转换函数
convert(expression,type)
cast(expression as type)

四、MariaDB与Mysql
MariaDB 5.x与Mysql 5.x 大部分内容几乎一样。开发人员再使用上甚至不用区分。
在服务器优化器、存储引擎方面MariaDB 10.x更加明显。

五、MariaDB默认数据库
mysql 存储MariaDB服务器用户认证信息。
information_schema 存储各种数据表信息
performance_schema 记录处理查询请求时发生的各种事件、锁、的现象。
test 供测试使用的数据库,一般都会删除。

六 、优化【SQL解析器-SQL优化器-存储引擎】
统计信息
执行计划分析
存储引擎
myIsam 不支持事务且只支持表级锁,非常特殊的条件下会使用。
Aria 支持页面缓存[ROW_FORMAT]和事务[TRANSACTIONAL],MariaDB创建内部表会使用。
XtraDB MariaDB 5.5默认存储引擎,是InnoDB的超集。
InnoDB MariaDB 10.0默认存储引擎。

05-06 02:59