mysql上

1、关系数据库、非关系数据库概念,及常用产品;

a、 关系型数据库归集为简单的二元关系(即二维表格形式),通过结构化查询语言SQL语句来对数据进行存取,有效的保持了数据的一致性;

产品范例:MySQL、oracle

b、非关系形数据库NOsql是作为关系型数据库的补充;为的是高性能、高并发、易扩展、易部署。

范例: 典型产品:                   memchached,redis(多数据类型支持),monagdb,   
          非关系新数据库的种类         Key-Value  典型产品memcached、redis 新浪  
          列存储:                     Cassandre \HBase
          面向文档数据库:             MongoDB、CouchDB
          图形数据库:                 Neo4J 、InfoGird

参考资料:SQL介绍 http://baike.baidu.com/view/595350.htm?fromId=34

SQL分类 http://baike.baidu.com/view/595350.htm?fromId=34



2、MYSQL安装方式:
   a、Yum安装 yum install MySQL-server(适合要求不高、公司内部)
   b、门户网站根据企业的需求把源码包制作成rpm,搭建yum仓库, yum install xxx -y
   c、编译安装MySQL:
    (MySQL5.0xx-5.1xx产品系列最常规的编译方式,linux运维常规选择)
     (MySQL5.5采用cmake或gmake方式编译;(linux运维选择)
   d、二进制免编译安装;
     (适合各类MySQL产品系列,直接解压下载的安装包,初始化即可完成MySQL的安装启动,专业dba的方式)
   注:建议首选5.5以上的版本,安装数量少推荐cmake,数量多直接二进制免编译安装。

 安装见附件



3、mysql 单实例:

a、MySQL多实例:一台机器上开启不同的端口,运行多个MySQL进程来提供服务;

b、MySQL多实例关系:公用一套MySQL安装程序,使用相同(也可以不同)的my.cnf配置文件、启动程序、
数据文件、在提供服务时,多实例MySQL在逻辑上看来是独自独立的,多个实例的自身是根据配置文件对应的设定值,来取得服务器的相关硬件资源多少。   :nginx、apache、redis、memcache都可以实现;
  c、优势:节约资源,提供更多的服务 ;
     劣势:当某个服务实例并发很高或者查询慢时,整个实例会消耗整个主机更多的内存、cpu、磁盘io资源,导致服务器上其它的实例提供的服务质量下降;
  d、适应范围:并发访问不大的业务;

安装见附件



4、 MySQL优雅启动、关闭;

a、启动命令: /etc/init.d/mysqld start

(来源于 /tools/mysql-5.5.32-linux2.6-x86_64/support-files/mysql.server )
     查看端口:ss -lnt | grep 3306
  b、启动原理:
     /etc/init.d/mysqld 调用mysqld_safe脚本,最后调用mysqld服务启动mysql服务启动mysql

查看A:/etc/init.d/mysqld
          283 
$bindir/mysqld_safe --datadir="$datadir"
--pid-file="$mysqld_pid_file_path"                  $other_args
>/dev/null 2>&1 &

查看B:ps -ef | grep mysql | grep -v grep
    root      1624     1  0 14:01 tty1     00:00:00 /bin/sh /application/mysql

/bin/mysqld_safe --datadir=/application/mysql/data/ --pid-             file=/application/mysql/data//A.pid
 
mysql     1862  1624  0 14:01 tty1     00:00:02
/application/mysql/bin/mysqld --basedir=/application/mysql
--datadir=/application/mysql/data/    
--plugin-dir=/application/mysql/lib/plugin --user=mysql
--log-error=/application/mysql/data//A.err
--pid-file=/application/mysql/data//A.pid --socket=/tmp/mysql.sock
--port=3306

c、关闭数据库mysqladmin -uroot -p123456 shutdown

查看:/etc/init.d/mysqld

if [ ! -e "$mysql_sock" ];then

printf "MySQL isstopped...\n"

exit

else

printf "StopingMySQL...\n"

${CmdPath}/mysqladmin -u${mysql_user} -p${mysql_pwd} -S /data/${port}/mysql.sock shutdown

fi

/etc/init.d/mysqld stop ( kill -USR `cat path/pid`)

d、多实例启动和关闭:
         /data/3306/mysql start
         /data/3307/mysql stop



5、mysql登录、修改登陆提示符、及解决明文密码泄漏:
 a、:mysql                              适用刚装完系统无密码情况的登录方式,不要密码
 b、:mysql -uroot                       刚装完系统无密码情况的登录方式,不要密码
 c、:mysql -uroot -p                    标准的dba命令行登录命令
 d、:mysql -uroot -p‘123456‘            非脚本一般不这样用,密码明文会泄漏密码

e、:mysql -uroot -p -S /data/3306/mysql.sock

#(多实例通过mysql的-S命令指定不同的sock文件登录不同的服务中)

f、:远程多实例的登录无需指定sock路径: mysql -uroot -p -h 127.0.0.1 -P3307

g、修改mysql登录提示符:  prompt \[email protected] \r:\m:\s->    #u系统用户 r主机名  临时的;
    永久生效:在my.cnf配置文件中【mysql】模块下添加  :prompt=\\[email protected]\\r:\\m:\\s->

 附:history功能解决明文密码泄漏
    history   参数:  -c 清空历史记录

-d 21 清楚某条历史记录

echo "HISTCONTROL=ignorespace" >>vi /etc/profile

source  /etc/profile

# cat /root/.mysql_historyt 注意:加空格登陆



6、mysql 登录后操作,及密码设置+密码丢失:

a、帮助:

mysql 中的帮助命令和linux命令的man、help(help linux 内置命令帮助)是类似的;
      使用:mysql> help use 即可 ;

b、系统命令使用:

mysql> system ls /tmp  (系统中使用)
      show databases like ‘my%‘; 查看以my开头的数据 %所有

c、删除所有mysql中的用户,包括root超级用户;
      mysql> delete from mysql.user;
   
   d、增加system并提升为超级管理用,及和root等价的用户,只是名字不同;
      mysql> grant all privileges  on *.* to [email protected]‘localhost‘ identified by‘oldboy123‘ with grant option;
   
   e、为mysql设置密码(密码为空时):
      mysqladmin -u root passwd  123456              #passwd后无需添加单引号或双引号;
      多实例:
      mysqladmin -u root password oldboy -S  /data/3307/mysql.sock

单实例命令行新密码替换旧密码:
      mysqladmin -uroot -p123456 password 654321     #-p后不要有空格和标点符号;
      多实例命令行新密码替换旧密码:
      mysqladmin -u root -poldboy  password 123456 -S /data/3307/mysql.sock

f、sql语句密码修改:
      update mysql.user set password=‘654321‘ where user=‘root‘ and  host=‘localhost‘;
      #明文密码:不可以直接登录,flush privileges;权限刷新:
      查看密码:
      select user,host,password from mysql.user;

指定函数加密密码:
      update mysql.user set password=password(123456) where user=‘root‘ and host=‘localhost‘;

#注意where 必须指定条件,不然就全改了;password ()函数更改密码;flush privileges;

g、找回丢失的密码(思想就是跳过授权表):
      单实例: 停止数据库;最好是优雅关闭数据库 :
                mysqladmin -uroot -p  shutdown
                /etc/init.d/mysqld stop
                检查:ps -ef | grep mysql;
                /application/mysql/bin/mysqld_safe  --skip-grant-tables & #跳过授权表

更新密码:
                update mysql.user set password=password(123456) where user=‘root‘ and host=‘localhost‘;
                flush privileges;

#在万不得已的情况下使用pkill 、killall、kill -9 ,最好别用。强行终止数据库服务器时,会让数据库产生更多的文件碎片,当碎片达到一定程度时,数据库会崩溃。暴力不好!
              #重新启动数据库,重新登录。

多实例
       /bin/sh /application/mysql/bin/mysqld_safe --defaults-file=/data/3307/my.cnf --skip-grant-tables  &
        mysql -S /data/3307/mysql.sock
        .....



7、mysql 用户创建及授权:

a、 help查看grant命令帮助:
     CREATE USER ‘jeffrey‘@‘localhost‘ IDENTIFIED BY ‘mypass‘;

GRANT ALL ON db1.* TO ‘jeffrey‘@‘localhost‘;               
     GRANT SELECT ON db2.invoice TO ‘jeffrey‘@‘localhost‘;      
     GRANT USAGE ON *.* TO ‘jeffrey‘@‘localhost‘ WITH MAX_QUERIES_PER_HOUR 90;

#USAGE 表示用户只可以登录,没有其它权限,操作的时候显示Access denied;

help查看create命令帮助:

CREATE USER ‘jeffrey‘@‘localhost‘ IDENTIFIED WITH my_auth_plugin;

范例:
     创建用户:create user  [email protected] identified by "password";
     查看用户权限:show grants for [email protected];
     在授权:grant all on dbname.* to [email protected];
     查看权限:show grants for [email protected];

b、 查看系统中所有的用户:
      select host,user from mysql.user;
      删除系统的多余帐号语法drop user"user"@"主机域" 注意引号以是单引号或双引号;
      范 例: drop user ‘‘@‘moban2‘    #如果为空直接为空即可;
      #如果drop删除不了(一般是特殊字符或大写),可以用下面的方式删除:
      范 例: delete from mysql.user where user=‘root‘ and host=‘127.0.0.0.1‘;

c、确定mysql 可以授权的权限:
     ⑴帮助查看:help revoke (权限收回)
       REVOKE ALL PRIVILEGES, GRANT OPTION FROM user [, user] ...
    ⑵权限查看:show grants for [email protected];
    ⑶收回插入权限:revoke insert  on  *.* from ‘user_name‘@‘localhost‘;  #注意此处指定数据库
    ⑷登录数据库后权限查看:show grants for [email protected];
    ⑸退出数据库后:
 
    mysql -uroot -p123456 -e "show grants for "username"@"localhost";" |
grep -i grant  | tail -1|tr ‘,‘ ‘\n‘ >all.privileges
      以下为数据库中的权限:

SELECT 查询\INSERT 插入 \UPDATE 更新\DELETE 删除 \CREATE 创建库和表

DROP 删除库和表\INDEX  索引\ALTER  修改 \CREATE TEMPORARY TABLES 创建临时表

LOCK TABLES 锁表\ EXECUTE 执行\ CREATE VIEW 创建视图SHOW VIEW 显示视图

CREATE ROUTINE 创建存储过程\ALTER ROUTINE 修改存储过程 EVENT 事件\ TRIGGER     触发器
      或者:select * from mysql.user\G;

d、常用的创建方法,使用grant命令创建用户的时,进行权限授权:
      范 例:grant all privileges on db1.* to  [email protected] identified by "password";
             授权命令  对应权限(all所有权限)   目标:库和表用户名和客户端主机                         用户密码     
             flush privileges;
             select host,user from mysql.user;        #查看创建的用户:

show grants for [email protected];     #查看创建用户的权限;

e、授权局域网内主机远程连接数据库,常见的使用%匹配方法
      范 例: grant all on   *.* to  [email protected]‘10.10.36.%‘ identified by "123456";
              flush privileges;
              mysql -u  username_2 -p -h 10.10.36.170  #登录使用-h指定主机,-P指定端口

f、针对博客、cms 等产品安装期间要采用最小化原则 :
      范例:grant select,insert,update,delete,create,drop on blog.* to [email protected]‘10.10.36.%‘  identified by "password";

#除了select,insert,update,delete4个权限外,还需要create,drop等危险权

生产数据库后收回权限(最好评估)

范 例:revoke create,drop on blog.*  from [email protected]‘10.10.36.%‘;



8、常用查询 (简):

1、使用帮助:               范例:help drop database             #这里可以没有;号
   2、查看数据库当前的用户:         select user();                 #()表示系统的函数;

3、查看系统中所有的用户:         select host,user from mysql.user;
   4、查看数据库的版本:             select version();
   5、显示数据库字符集:             SHOW CHARACTER SET;   
   6、设定字符集:                   set names gbk;
   7、查看当前的时间:               select now();
   8、显示所有数据库:               show databases;
   9、显示当前数据库:               select database();

#显示某一个可以使用like或where:
       范例:show databases where "name";
            show databases like "name";
            show databases like ‘data%‘;            %所有
  10、创建数据库:                  create database name;
  11、查看建库语句:                 show create database name;

show create database name\G;
  12、删除数据库:                  drop database name;
  13、连接切换数据库:              use name;
  14、查看当前数据库的表:          show tables;
  15、查看指定库中的表:             show tables from name;
#显示字符集,默认是latin1,支持中文没有问题。网页、程序的字符集要和数据库的字符集相匹配,包括客户端、服务端、java程序;
  16、查看建结构:                  desc student;

show columns from student;
  17、查看以建表语句:         show create table student\G;#发送命令给mysqlserver垂直显示;
  18、删除表:                      drop tables student;
                                    delete from test where id=2;    #指定条件删除;

19、truncate清空表中所有内容:    truncate table test;
#truncate相当于直接清空mysql 物理文件, delete  逻辑删除,按行删;

20、-e 命令行与mysql交互          mysql  -uroot -p123456 -e "show databases;"
  21、查看数据库连接概况;          show processlist;
 #注意观察时间比较长的语句可能为慢查询,需要优化;
                                    show full  processlist;         #完整的显示;
  22、查进程:                      show variables;
                                                范例:mysql  -uroot -p123456 -e "show variables;" | grep logbin
  23、查状态:                      show status
  24、查全局状态:                  show global status
                                                范例: mysql  -uroot -p123456 -e "show global status;"   | grep select
                                               show global status like "%insert%";



9、 数据库字符集设置与更改;

http://hiboyandhigirl.blog.51cto.com/9150052/1577235                                #附件



10、mysql 客户端工具使用excel手册 见附件 (命令详解)                                            #附件

MYSQL客户端工具    作用
mysqlaccess 检查访问权限的客户端
mysqladmin 管理mysql服务器的客户端
mysqlbinlog 处理二进制日志文件的实用工具
mysqlcheck 表维护和维修程序
mysqldump 数据库备份程序
mysqlhotcopy 数据库备份程序
mysqlimport 数据导入程序
mysqlshow 显示数据库、表和列信息
myisamog 显示MyISAM日志文件内容
perror 解释错误代码
replace 字符串替换实用工具
mysqlzap  杀死符合某一模式的进程
时间: 2024-10-20 11:51:53

mysql上的相关文章

Mysql上的RAC:Percona XtraDB Cluster负载均衡集群安装部署手册

 Percona XtraDB Cluster安装部署手册 引言 编写目的 编写此文档,供PerconaXtraDB Cluster部署时使用. 预期读者 系统维护人员及实施人员. 编制依据及参考资料 目标 通过阅读该手册,让读者明确PerconaXtraDB Cluster的安装.配置和维护情况,为后续数据库运维工作提供指导. 应用部署方案 环境准备 服务器列表 序号 IP 用途 HOSTNAME 操作系统 1 192.168.0.7 Percona XtraDB Cluster RedHat

一次mysql上 having的使用问题

在mysql上执行了这个语句: SELECT id, uid, message, u_uid, create_time FROM message GROUP BY u_uid HAVING uid = 10001 ORDER BY create_time; 但是执行报错如下:GROUP BY clause and contains nonaggregated column 总结了一下原因,原来是select 的元素只能是 GROUP BY 中的元素,而这个问题只是在部分版本当中会有这个问题,解决

监控mysql上客户端的连接数

监控mysql上客户端的连接数: vi a1.py #!/usr/bin/python import osimport datetime d1 = datetime.datetime.now().strftime("%Y-%m-%d %H:%M") d2 = datetime.datetime.now().strftime("%Y-%m-%d") os.system('/bin/rm -rf /log/Hosts/date +%Y-%m-%d -d "7

Solr之搭建Solr5.2.1服务并从Mysql上导入数据

一.开启Solr服务 1.首先从solr官网下载solr-5.2.1.tgz包,解压之后为solr-5.2.1. 2.读取README.txt可知通过bin/solr start命令开启solr服务,当然可以将solr-5.2.1/bin加入环境变量里面.此时开启的服务是放在jetty下的服务,也可以放在Tomcat下,只是感觉那样挺麻烦,还需要再下载一个Tomcat包. 3.开启服务之后,默认是开启8983端口,此时就可以使用localhost:8983/solr/进行访问了:如果不能访问,通

如何导入外部的frm、MYD、MYI文件到自己的mysql上查看

很多时候,在查看某些项目的数据库文件时,发现不是一般的.sql文件,而是.frm..MYD..MYI这三个文件,这时候就有很多朋友不清楚怎么查看了. po主也是在百度上翻翻查查,看了一篇又一篇,终于鼓捣出来了.很多发表的文章都说了,咱们自己建的数据库文件是放在mysql安装目录下的data文件里,可是...看下图,po主的数据库可不止这2个. 出现这种情况,有可能是mysql版本的不同,po主这里安装的是5.6版本的,安装在c盘下,如果安装路径不一样的朋友,请根据你们的自身情况查看 现在就揭晓5

Mysql 上亿级数据导入Hive思路分享

前提条件: 数据库容量上亿级别,索引只有id,没有创建时间索引 达到目标: 把阿里云RDS Mysql表数据同步到hive中,按照mysql表数据的创建时间日期格式分区,每天一个分区方便查询 每天运行crontab定时的增量备份数据,还是依据自增的id 遇到的问题: 没法建立创建时间的索引,不能按时间范围去查询,那样会严重影响线上数据库的性能?只能按照id的方式去增量的读取索引,存储到临时表,然后在转储到正式表,动态的写入时间分区 使用sqoop直接导入hive?还是把数据导入到hdfs以內建表

JDBC prepareStatement 存储在mysql上的datetime 时间字段报错的解决方法

遇到一个问题,网上找了很多资料 都不能解决 自己曲线救国解决了,记录一下,如果各位有更好的办法欢迎留言. 首先 我在mysql数据库上创建了一个表其中的createTime 字段用的dateTime类型(项目需要 我个人偏向bigint 毕竟做排序什么的 效率更高): 然后项目里用的JDBC ,当我使用prepareStatement时,prepareStatement.setTimestamp(6, qa.getCreateTime()); qa.getCreateTime()存的是new T

一天小结 php链接mysql 上传本地照片

1:session 与 cookie 的区别 session 保存在浏览器,关闭浏览器自己失效,一般保存20分钟 cookie 保存在自己的电脑上 2:$_FILE 判断是否有文件上传 <from enctype=" " ></from> // enctype选择要上传的文件 3:$_cpload 将文件上传到服务器的哪里 is_uploaded_file();move_uploaded_file();

快速生成mysql上百万条测试数据

1.最简单的方法:编写一个存储过程循环添加数据 创建一个函数进行插入: CREATE  PROCEDURE `insert_test_size`(IN num int)begindeclare i int;set i=0;while i<num doinsert into test ( a,b,word) values (rand()*10,rand()*100,uuid());set i=i+1;end while;end; 这个方法是可以添加上百万条数据,但是消耗的时间也是十分巨大的,执行1