安装MYSQL的思考与分析_mysql安装和基本使用

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)

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值