Mysql基本安装及其使用

       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、sybase

sql --结构化查询语句
ANSI 2003 --国际标准化的结构化查询
mysql mysql
T-sql    SQL
pl/sql oracle

mysql版本:
社区版(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 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.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 mysql
service mysqld start




2、建立配置文件/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...
OK
Filling help tables...
OK
..... 看到两个ok说明成功
To start mysqld at boot time you have to copy
support-files/mysql.server to the right place for your system

PLEASE 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_installation

which will also give you the option of removing the test
databases and anonymous user created by default.  This is
strongly 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.pl
cd /usr/mysql-test ; perl mysql-test-run.pl

Please report any problems with the /usr/bin/mysqlbug script!

                                                          [确定]
正在启动 mysqld:                                          [确定]


验证是启动成功
# lsof -i:3306
COMMAND  PID  USER   FD   TYPE DEVICE SIZE/OFF NODE NAME
mysqld  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 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 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-source
datadir=/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 install


2.安装mysql
shell> cmake . -L   # overview等于./configure --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,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            = 3306
socket          = /data1/mysql.sock


[mysqld]
port=3306
datadir=/data1
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> 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 start

2)直接使用mysqld_safe方式来启动
# cd $basedir
# ./bin/mysqld_safe &



mysql shell的使用:
获取当前mysql终端的使用帮助:
mysql> \h
mysql> help
mysql> ?

mysql> help 命令
mysql> ? 命令
--简单的命令使用信息
mysql> help contents 查看帮助总目录


connect  连接数
mysql> show processlist;

delimiter --修改结束符


edit --编辑最后一条命令历史

pager   --分页  
mysql> pager less
PAGER set to 'less'

notee       --不双向重定向
mysql> tee /tmp/mysql.xx

prompt      --修改提示符
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 password

network(tcp):
/path1/path2/mysql -h mysql_server_ip -P port_number -u username -p password

windows客户端:
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' failed
error: '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 1
mysqld is alive
mysqld is alive
mysqld is alive






--------------------------
mysqlimport --从文件导入数据至数据库
# mysql -uroot -p456 -S /data2/mysql.sock -e 'CREATE TABLE  test.imptest(id INT, name VARCHAR(30))'
# 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



---------------------------
基本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)

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章