mysql AB
sun
oracle/mysql/SQL/DB2/sybase
sql --结构化查询语句
ANSI 2003 --国际标准化的结构化查询
mysql mysql
T-sql SQL
pl/sql oracle
mysql版本:
社区版(GA)
企业版
mysql3.23 mysql4.1 mysql5.1 mysql5.5
四种方法(源码/二进制)
二进制的安装:
1.redhat mysql(RPM) --光盘中mysql老旧,漏洞多,如果一定要使用此版本,请到红帽的源码目录树中下载最新版本
2.mysql AB mysql(RPM) --mysql官方的RPM包,提供版本比较多,像suse/redhat/oracle linux
3.glibc mysql(二制软件包) --mysql-xxx-glibc.tar.gz
优点:安装使用时比较方便,升级简单
缺点:一个系统只能安装一个mysql,可定制性差,不灵活。
源码安装:
1.source mysql(5.1) ./configure && make && make install
2.source mysql(5.5) cmake && make && make install
rpm包安装
1、redhat RPM
# yum list |grep mysql
mysql.i386 --客户端
mysql-bench.i386 --压力测试工具包
mysql-connector-odbc.i386 --连接器
mysql-devel.i386 --开发包
mysql-server.i386 --服务器软件包
mysql-test.i386 --测试数据库包
2、mysql官方的RPM
# rpm -ivh MySQL-client-community-5.1.58-1.rhel5.i386.rpm MySQL-server-community-5.1.58-1.rhel5.i386.rpm
1、自动初始化数据库
2、自动启动mysqld
glibc安装:
# service mysql stop --先停止RPM包安装的mysqld
# tar xzvf mysql-5.1.58-linux-i686-glibc23.tar.gz -C /opt
shell> groupadd mysql
shell> useradd -r -g mysql mysql
shell> cd /opt
shell> ln -s full-path-to-mysql-VERSION-OS mysql
shell> cd mysql
shell> chown -R mysql .
shell> chgrp -R mysql .
shell> scripts/mysql_install_db --user=mysql
shell> chown -R root .
shell> chown -R mysql data
shell> cp support-files/my-medium.cnf /etc/my.cnf
shell> bin/mysqld_safe --user=mysql &
shell> cp support-files/mysql.server /etc/init.d/mysql.glbic
# vim /etc/init.d/mysql.glibc
basedir=/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 32系统支持4G的大表
--with-mysqld-ldflags=-all-static 服务端使用静态库的方式编译
--with-client-ldflags=-all-static 客户端使用表态库的方式编译
--官方称可提升mysql10%左右的性能
--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-source
datadir=/opt/mysql-source/var
-----------------------
源码安装mysql-5.5:
1.安装cmake
# tar xzvf cmake-2.8.5.tar.gz
# ./configure && make &&make install
2.安装mysql
shell> cmake . -L # overview等于./confgiure --help
shell> cmake . -LH # 查看简约的帮助,相比上一步有更详细一点的选项说明
shell> cmake . -LAH # 查看所有的配置选项
shell> ccmake . #伪图形界来配置软件
shell> tar zxvf mysql-VERSION.tar.gz
shell> cd mysql-VERSION
shell> 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 install
shell> cd /opt/mysql
shell> chown -R mysql .
shell> chgrp -R mysql .
shell> scripts/mysql_install_db --user=mysql
shell> chown -R root .
shell> chown -R mysql data
shell> cp support-files/my-medium.cnf /etc/my.cnf
shell> 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.sock
glibc mysql 3307 /data2 /data2/my.cnf /data2/pidfile /data2/mysql.sock
source mysql 3308 /data3 /data3/my.cnf /data3/pidfile /data3/mysql.sock
source mysql 3309 /data4 /data4/my.cnf /data4/pidfile /data4/mysql.sock
mysqld服务端加载配置文件的顺序:[mysqld]
/etc/my.cnf /etc/mysql/my.cnf /usr/etc/my.cnf ~/.my.cnf
查询加载顺序:
# mysqld --verbose --help
mysql客户端命令执行时加载配置文件的顺序:([client] | [mysql])
/etc/my.cnf /etc/mysql/my.cnf /usr/etc/my.cnf ~/.my.cnf
查询加载顺序:
# mysql --help
--配置文件在加载,默认所有的路存在配置文件都会被加载,而且如果每个配置文件中选有冲突,后加载配置文件会覆盖先载的配置文件。
# mkdir /{data1,data2,date3,data4}
# chown mysql.mysql /{data1,data2,data3,data4}
# chmod 700 /{data1,data2,data3,data4} -R
# /usr/bin/mysql_install_db --user=mysql --datadir=/data1 --basedir=/
# /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 = 3306
socket = /data1/mysql.sock
[mysqld]
port=3306
datadir=/data1
basedir=/
socket=/data1/mysql.sock
pid-file=/data1/mysqld.pid
# /usr/bin/mysqld_safe --defaults-file=/data1/my.cnf &
# netstat -tnlp |grep 3306
tcp 0 0 :::3306 :::* LISTEN 10348/mysqld
-------------------------------------
# vim /data2/my.cnf
[client]
port = 3307
socket = /data2/mysql.sock
[mysqld]
datadir=/data2
basedir=/opt/mysql-glibc/
socket=/data2/mysql.sock
pid-file=/data2/mysqld.pid
port=3307
# /opt/mysql-glibc/bin/mysqld_safe --defaults-file=/data2/my.cnf &
# netstat -tnlp |grep 3307
tcp 0 0 0.0.0.0:3307 0.0.0.0:* LISTEN 10453/mysqld
--------------------------------
# vim /data3/my.cnf
[client]
port = 3308
socket = /data3/mysql.sock
[mysqld]
datadir=/data3
basedir=/opt/mysql-source5.1
socket=/data3/mysql.sock
pid-file=/data3/mysqld.pid
port=3308
#/opt/mysql-source5.1/bin/mysqld_safe --defaults-file=/data3/my.cnf &
# netstat -tnlp |grep 3308
tcp 0 0 0.0.0.0:3308 0.0.0.0:* LISTEN 10561/mysqld
--------------------
# vim /data4/my.cnf
[client]
port = 3309
socket = /data3/mysql.sock
[mysqld]
datadir=/data4
basedir=/opt/mysql-source5.5
socket=/data4/mysql.sock
pid-file=/data4/mysqld.pid
port=3309
#/opt/mysql-source5.5/bin/mysqld_safe --defaults-file=/data4/my.cnf &
# netstat -tnlp |grep 3309
tcp 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.sock
mysql shell的使用:
获取当前mysql终端的使用帮助:
mysql> \h
mysql> help
mysql> ?
mysql> help 命令
mysql> ? 命令
--简单的命令使用信息
mysql> help contents 查看帮助总目录
mysql> \s
mysql> status --查看mysql的状态
mysql> rehash --自动补全表或者列的路径
? help --显示帮助
edit --编辑最后一条命令历史
\c --中断当前SQL输入,跳到下一个提示符
system \! --外部调用shell命令
delimiter --修改结束符
source --执行外部SQL脚本
prompt --修改mysql的提示符
通过mysql的返回编码查看发生了什么错误。
# perror 13 --根据数据库返回的错误编码查询错误信息
------------------------------
mysql/windows客户端
mysql -uroot -p123 -e "show databases;"
sqlyog
shell-->mysql -e --> mysqlserver
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的格式导出
-------------------------
mysqladmin --管理mysql服务器
密码操作相关的:
# mysqladmin -S /data1/mysql.sock password '123' --设置密码
# mysqladmin -S /data2/mysql.sock password '456'
# mysqladmin -S /data3/mysql.sock password '789'
# mysqladmin -uroot -p123 -S /mysql/data3/mysql.sock password 'redhat' --更改密码
库的操作:
# 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 -uroot -p456 -S /data2/mysql.sock kill 3
# mysqladmin -uroot -p789 ping -c 3 -i 1
mysqld is alive
mysqld is alive
mysqld is alive
# mysqladmin -uroot password '123'; --为root用户设置密码
# mysqladmin -hserver12.example.com -uroot password '123'; --为不同主机后缀设置密码
--------------------------
mysqlimport --从文件导入数据至数据库
# mysql -uroot -p456 -S /data2/mysql.sock -e 'CREATE TABLE imptest(id INT, n VARCHAR(30))' test
# vim imptest.txt
1 test1
2 test2
3 test3
4 test4
5 test5
6 test6
# mysqlimport -uroot -p456 --local -S /data2/mysql.sock test imptest.txt
---------------------------
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 db01.imptest; --查询当前库中imptest表中的所有的内容
Empty set (0.00 sec)
本文出自 “思考” 博客,谢绝转载!