mysql AB (MySQL有限公司)
由MySQL创始人和主要开发人创办的公司。MySQL AB最初是由David Axmark、Allan Larsson和Michael“Monty”Widenius在创办的。 sun<LAMP> 1、oracle 2、mysql 3、SQL server 4、DB2 IBM出口的一系列关系型管理系统 5、sybasesql --结构化查询语句 ANSI 2003 --国际标准化的结构化查询 mysql mysql T-sql SQL pl/sql oraclemysql版本: 社区版(GA) 企业版 mysql3.23 mysql4.1 mysql5.1 mysql5.5四种方法 1、通过二进制的方式安装 1) rpm(redhat/mysql rpm) 2) mysql glbic优点:安装和维护都比较方便,不需要编译。缺点:可定制性差,可移植性差,一个系统上只能安装一个mysql 2、通过源代码编译的安装(mysql-xx.tar.gz) 5.1源码安装 5.5源码安装优点:可定制性强(安装可以根据用户的需求,只安装所需要的功能)缺点:安装复杂,所需要的时候比二进制的安装要长得多 二进制的安装:1.redhat mysql(RPM) --光盘中mysql老旧,漏洞多,如果一定要使用此版本,请到红帽的源码目录树中下载最新版本2.mysql AB mysql(RPM) --mysql官方的RPM包,提供版本比较多,像suse/redhat/oracle linux3.glibc mysql(二制软件包) --mysql-xxx-glibc.tar.gz优点:安装使用时比较方便,升级简单缺点:一个系统只能安装一个mysql,可定制性差,不灵活。源码安装:1.source mysql(5.1) ./configure && make && make install2.source mysql(5.5) cmake && make && make installrpm包安装1、redhat RPM# yum list |grep mysql mysql.x86_64 --客户端 mysql-libs.x86_64 --库包(类似于dll),可以让第三方程序调用这些库文件,扩充软件的功能。 mysql-server.x86_64 --服务器软件包 mysql-bench.x86_64 --压力测试工具包 mysql-connector-odbc.x86_64 --连接器 mysql-devel.x86_64 --开发包 mysql-test.x86_64 --测试数据库包 1、安装软件#yum -y install mysql-server mysqlservice mysqld start2、建立配置文件/etc/my.cnf# vim /etc/my.cnf[mysqld] <---[进程名字] 对应的配置给予对应的进程名字的进程使用,mysqld是服务端datadir=/data <---数据库用于存放数据的数据文件所在路径socket=/data/mysqld.sock <---套接字文件,服务启动的时候生成,服务正常关闭就删除该文件user=mysql <--- 服务运行的有效身份port=3306 <--- tcp协议监听的端口初始化 MySQL 数据库: Installing MySQL system tables...OKFilling help tables...OK..... 看到两个ok说明成功To start mysqld at boot time you have to copysupport-files/mysql.server to the right place for your systemPLEASE REMEMBER TO SET A PASSWORD FOR THE MySQL root USER ! <---提醒别忘机给root用户改密码To do so, start the server, then issue the following commands:/usr/bin/mysqladmin -u root password 'new-password' <---改密码的命令/usr/bin/mysqladmin -u root -h rhel6.example.com password 'new-password'Alternatively you can run:/usr/bin/mysql_secure_installationwhich will also give you the option of removing the testdatabases and anonymous user created by default. This isstrongly recommended for production servers.See the manual for more instructions.You can start the MySQL daemon with:cd /usr ; /usr/bin/mysqld_safe & <---启动数据的方式之一(最通用的方式)You can test the MySQL daemon with mysql-test-run.plcd /usr/mysql-test ; perl mysql-test-run.plPlease report any problems with the /usr/bin/mysqlbug script! [确定]正在启动 mysqld: [确定]验证是启动成功# lsof -i:3306COMMAND PID USER FD TYPE DEVICE SIZE/OFF NODE NAMEmysqld 8009 mysql 10u IPv4 164225 0t0 TCP *:mysql (LISTEN)glibc安装:# service mysql stop --先停止RPM包安装的mysqld# tar xzvf mysql-5.5.25-linux2.6-x86_64_glibc.tar.gz -C /opt参照安装文档INSTALL-BINARY******************************************************shell> groupadd mysqlshell> useradd -r -g mysql mysqlshell> cd /optshell> ln -s full-path-to-mysql-VERSION-OS mysqlshell> cd mysqlshell> chown -R mysql .shell> chgrp -R mysql .shell> scripts/mysql_install_db --user=mysqlshell> chown -R root .shell> chown -R mysql datashell> cp support-files/my-medium.cnf /etc/my.cnfshell> bin/mysqld_safe --user=mysql &shell> cp support-files/mysql.server /etc/init.d/mysql.glbic# vim /etc/init.d/mysql.glibcbasedir=/opt/mysql-glibc*******************************************----------------------源码安装5.1:# pkill mysql# tar xzvf mysql-5.1.58.tar.gz -C /usr/local/src/# cd /usr/local/src/mysql-5.1.58/# ./configure --prefix=/opt/mysql-source --with-big-tables --with-mysqld-ldflags=-all-static --with-client-ldflags=-all-static --with-charset=utf8 --with-extra-charsets=all --with-big-tables 64系统支持4G的大表 --with-mysqld-ldflags=-all-static 服务端使用静态库的方式编译 --with-client-ldflags=-all-static 客户端使用表态库的方式编译官方称可提升mysql5%-10%左右的性能,静态编译就是把程序要用到的一些库文件给编译到程序里,那么调用方便,当然编译软件的体积会大一点。 --with-charset=utf8 --指定默认的语言编码utf8 --with-extra-charsets=all --指定扩展的语言编码# make && make install # cd /opt/mysql-source/# chown mysql.mysql . -R# mv /etc/my.cnf /etc/my.cnf.bak.bak# ./bin/mysql_install_db --user=mysql# chown root . -R# chown mysql var -R# cp share/mysql/mysql.server /etc/init.d/mysql.souce# vim /etc/init.d/mysql.souce basedir=/opt/mysql-sourcedatadir=/opt/mysql-source/var-----------------------源码安装mysql-5.5:1.安装cmake# tar xzvf cmake-2.8.5.tar.gz# cd cmake-2.8.5# ./configure && make &&make install2.安装mysqlshell> cmake . -L # overview等于./configure --helpshell> cmake . -LH # 查看简约的帮助,相比上一步有更详细一点的选项说明shell> cmake . -LAH # 查看所有的配置选项,包括选项的解释说明shell> ccmake . #伪图形界来配置软件shell> tar zxvf mysql-VERSION.tar.gzshell> cd mysql-VERSIONshell> cmake . -DCMAKE_INSTALL_PREFIX=/opt/mysql \ --指定安装路径-DWITH_INNOBASE_STORAGE_ENGINE=1 \ --启用innodb存储引擎-DENABLED_LOCAL_INFILE=1 \ --允许通过本地导入数据-DDEFAULT_CHARSET=utf8 \ --指定默认的语言编码-DEXTRA_CHARSETS=all \ --扩展语言编码-DDEFAULT_COLLATION=utf8_general_ci \ --排序语言编码-DSYSCONFDIR=/opt/mysql/etc \ --配置文件的目录-DMYSQL_DATADIR=/data \ --数据目录-DMYSQL_UNIX_ADDR=/data/mysql.sock \ --socket目录shell> make && make installshell> cd /opt/mysqlshell> chown -R mysql .shell> chgrp -R mysql .shell> scripts/mysql_install_db --user=mysqlshell> chown -R root .shell> chown -R mysql datashell> cp support-files/my-medium.cnf /etc/my.cnfshell> bin/mysqld_safe --user=mysql &shell> cp support-files/mysql.server /etc/init.d/mysql.server-------------------------在同一台机器上启动多个mysql实例:mysql服务器的组成 1、mysql程序(mysqld)-运行->实例 2、数据库(硬件,文件)mysql启动时需要的因素:mysql rpm 3306 /data1 /data1/my.cnf /data1/pidfile /data1/mysql.sockglibc mysql 3307 /data2 /data2/my.cnf /data2/pidfile /data2/mysql.socksource mysql 3308 /data3 /data3/my.cnf /data3/pidfile /data3/mysql.socksource mysql 3309 /data4 /data4/my.cnf /data4/pidfile /data4/mysql.sockmysqld服务端加载配置文件的顺序:[mysqld]/etc/my.cnf /etc/mysql/my.cnf /usr/etc/my.cnf ~/.my.cnf查询加载顺序:# mysqld --verbose --helpmysql客户端命令执行时加载配置文件的顺序:([client] | [mysql])/etc/my.cnf /etc/mysql/my.cnf /usr/etc/my.cnf ~/.my.cnf 查询加载顺序:# mysql --help--配置文件在加载,默认所有的路存在配置文件都会被加载,而且如果每个配置文件中选有冲突,后加载配置文件会覆盖先载的配置文件。# mkdir /{data1,data2,data3,data4}# chown mysql.mysql /{data1,data2,data3,data4}# chmod 700 /{data1,data2,data3,data4} -R# /usr/bin/mysql_install_db --user=mysql --datadir=/data1 # /opt/mysql-glibc/scripts/mysql_install_db --user=mysql --datadir=/data2 --basedir=/opt/mysql-glibc/# /opt/mysql-source5.1/bin/mysql_install_db --user=mysql --datadir=/data3 --basedir=/opt/mysql-source5.1# /opt/mysql-source5.5/bin/mysql_install_db --user=mysql --datadir=/data4 --basedir=/opt/mysql-source5.5-------------# vim /data1/my.cnf[client]port = 3306socket = /data1/mysql.sock[mysqld]port=3306datadir=/data1socket=/data1/mysql.sockpid-file=/data1/mysqld.pid# /usr/bin/mysqld_safe --defaults-file=/data1/my.cnf &# netstat -tnlp |grep 3306tcp 0 0 :::3306 :::* LISTEN 10348/mysqld -------------------------------------# vim /data2/my.cnf[client]port = 3307socket = /data2/mysql.sock[mysqld]datadir=/data2basedir=/opt/mysql-glibc/socket=/data2/mysql.sockpid-file=/data2/mysqld.pidport=3307# /opt/mysql-glibc/bin/mysqld_safe --defaults-file=/data2/my.cnf &# netstat -tnlp |grep 3307tcp 0 0 0.0.0.0:3307 0.0.0.0:* LISTEN 10453/mysqld --------------------------------# vim /data3/my.cnf[client]port = 3308socket = /data3/mysql.sock[mysqld]datadir=/data3basedir=/opt/mysql-source5.1socket=/data3/mysql.sockpid-file=/data3/mysqld.pidport=3308#/opt/mysql-source5.1/bin/mysqld_safe --defaults-file=/data3/my.cnf &# netstat -tnlp |grep 3308tcp 0 0 0.0.0.0:3308 0.0.0.0:* LISTEN 10561/mysqld --------------------# vim /data4/my.cnf[client]port = 3309socket = /data3/mysql.sock[mysqld]datadir=/data4basedir=/opt/mysql-source5.5socket=/data4/mysql.sockpid-file=/data4/mysqld.pidport=3309#/opt/mysql-source5.5/bin/mysqld_safe --defaults-file=/data4/my.cnf &# netstat -tnlp |grep 3309tcp 0 0 0.0.0.0:3309 0.0.0.0:* LISTEN 10598/mysqld --------------------本地是使用socket文件来连接mysql# mysql -S /data1/mysql.sock# mysql -S /data2/mysql.sock# mysql -S /data3/mysql.sock# mysql -S /data4/mysql.sock远程连接mysql使用是tcp/ip# mysql -h127.0.0.1 -P 3306# mysql -h127.0.0.1 -P 3307# mysql -h127.0.0.1 -P 3308# mysql -h127.0.0.1 -P 3309------------------登录mysql服务器的方法:/opt/mysql-glibc/bin/mysql --不指定任何参数的时候,默认连接/tmp/mysql.sock# /opt/mysql-glibc/bin/mysql -S /tmp/mysql.sock --明确指定连接的socket# /opt/mysql-glibc/bin/mysql -h127.0.0.1 --通过TCP/IP连接mysql以上三种方式使用系统当前登录用户($username@'localhost'),密码都为空.指定用户名和密码:# mysql -uroot -p123 -h127.0.0.1# mysql -uroot -p123 -S /tmp/mysql.sockmysql> set password for 'root'@'127.0.0.1'=password('123')mysql> flush privileges;mysql启动总结:1)第一种方式,通过启动脚本来启动(/etc/init.d/xxx-->basedir-->./bin/mysqld_safe)service xxx start/etc/init.d/xxx start2)直接使用mysqld_safe方式来启动# cd $basedir# ./bin/mysqld_safe &mysql shell的使用:获取当前mysql终端的使用帮助:mysql> \hmysql> helpmysql> ?mysql> help 命令 mysql> ? 命令 --简单的命令使用信息mysql> help contents 查看帮助总目录connect 连接数mysql> show processlist;delimiter --修改结束符edit --编辑最后一条命令历史pager --分页 mysql> pager lessPAGER set to 'less'notee --不双向重定向mysql> tee /tmp/mysql.xxprompt --修改提示符mysql> prompt [mysql]prompt [mysql \u@\h]rehash --自动补全表或者列的路径source --调用外部sql语句mysql> status --查看mysql的状态system 外部调用shell命令use 进入数据库通过mysql的返回编码查看发生了什么错误。# perror 13 --根据数据库返回的错误编码查询错误信息------------------------------mysql/windows客户端(图形/字符)linux mysql客户端 #mysql -uroot -p -e "show databases;" --linux # mysql -uroot -p -h127.0.0.1 --使用tcp连接# mysql -uroot -p -S /tmp/mysql.sock --使用套接字连接socket(本地连接): /path1/path2/mysql -S /xx/xx/mysql.sock -u username -p password /path1/path2/mysql --socket=/xx/xx/mysql.sock -u username -p passwordnetwork(tcp): /path1/path2/mysql -h mysql_server_ip -P port_number -u username -p passwordwindows客户端: sqlyog --windows商业mysql客户1.ssh-→ mysql(localhost:port) username:root password:xxx 2.mysql> CREATE USER 'root'@'192.168.0.252' IDENTIFIED BY 'mypass';shell-->mysql -e --> mysqlserver-->shell# mysql -h127.0.0.1 -P3308 -uroot -p123 -s -N -e "select user,password,host from mysql.user;"-h 主机名 -u 用户名 -p 密码 -P 端口 -s 去除边框-S 后面指定是服务端socket -e 在shell中执行mysql中的命令 -N 去除标题 -H 使用html格式导出 -X 使用XML的格式导出更多的选项请参考: # mysql --help -------------------------mysqladmin --管理mysql服务器(你当前登录数据的用户必须管理员权限) Administration program for the mysqld daemon. Usage: mysqladmin [OPTIONS] command command....密码操作相关的:# mysqladmin -S /data1/mysql.sock password '123' --设置密码# mysqladmin -S /data2/mysql.sock password '456'# mysqladmin -S /data3/mysql.sock password '789'# mysqladmin -hserver12.example.com -uroot password '123'; --为不同用户的后缀设置密码error #mysqladmin -uroot -S /data2/mysql.sock password '456'mysqladmin: connect to server at 'localhost' failederror: 'Access denied for user 'root'@'localhost' (using password: YES)' #mysqladmin -uroot -p -S /data2/mysql.sock password '456'# mysqladmin -uroot -p123 -S /mysql/data3/mysql.sock password 'redhat' --更改密码安全关闭数据库服务:# /etc/init.d/mysql stop # mysqladmin -uroot -predhat -S /data1/mysql.sock shutdown --关闭数据库服务器,只有这个命令才能安全关闭数据库库的操作:# mysqladmin -uroot -predhat -S /data1/mysql.sock create testbb2 --新建数据库# mysqladmin -uroot -predhat -S /data1/mysql.sock drop testbb2 --删除数据库使用mysqladmin查看连接传话的线程列表:# mysqladmin -uroot -predhat processlist+----+------+-----------+----+---------+------+-------+------------------+| Id | User | Host | db | Command | Time | State | Info |+----+------+-----------+----+---------+------+-------+------------------+| 2 | root | localhost | | Query | 0 | | show processlist |+----+------+-----------+----+---------+------+-------+------------------+杀死某个会话:# mysqladmin -uroot -p456 -S /data2/mysql.sock kill 3测试数据库服务是否正常开启:# mysqladmin -uroot -p789 ping -c 3 -i 1mysqld is alivemysqld is alivemysqld is alive--------------------------mysqlimport --从文件导入数据至数据库# mysql -uroot -p456 -S /data2/mysql.sock -e 'CREATE TABLE test.imptest(id INT, name VARCHAR(30))'# vim imptest.txt1 test12 test23 test34 test45 test56 test6# mysqlimport -uroot -p456 --local -S /data2/mysql.sock test imptest.txt---------------------------基本SQL操作:mysql> show databases; --显示所有的数据库+--------------------+| Database |+--------------------+| information_schema || mysql || test |+--------------------+3 rows in set (0.00 sec)mysql> use test; --进入test数据库mysql> select database(); --显示当前所在的数据库+------------+| database() |+------------+| test |+------------+1 row in set (0.00 sec)mysql> show tables; --查看当前库中有哪些表+----------------+| Tables_in_test |+----------------+| imptest |+----------------+1 row in set (0.00 sec)mysql> select * from test.imptest; --查询当前库中imptest表中的所有的内容Empty set (0.00 sec)