mysql第一天,先讲讲我对mysql的看法。mysql无疑是开源数据库中发展最好的,不过在sunoracle收购后,我并不是很看好他的发展。对于我们这些应用者来说,由于LAMP使用很广泛,mysql如今的发展已经很能够支撑很长一段时间。所以,我今天就一步一步记录mysql的学习过程。同时,我还会关注postgresqlnosql方面的咨询。

 

一、简介

 

使用mysql的理由:简单、易用、使用广泛。

 

安装方式:rpm版;二进制;源码版(linux推荐使用)

软件版本:现在虽然在更新,但幅度并不是很大,最新是5.5,建议大家使用5.2版本以上即可。

 

-----------------------------------------------------------------

二、rpm版安装

 

操作流程:yum install mysql* -y

 

         mysql.i386                          --mysql客户端和共享库

         mysql-bench.i386              --mysql标准描述和数据,压力测试工具

         mysql-connector-odbc.i386     --odbc数据库连接工具

         mysql-devel.i386               --mysql开发库

         mysql-server.i386             --mysql服务端

         mysql-test.i386                           --mysql测试

 

安装路径:

         # ls /var/lib/mysql/           --rpm数据文件

                  

                   ibdata1    

                   ib_logfile1 

                   ib_logfile0                 --inodb引擎文件,information_schema一些信息在此

                   mysql.sock                 --用于本地连接

                   mysql                         --对应mysql

                   test                    --对应test

        

         # vim /etc/my.cnf

 

         [mysqld]                               --用中括号括起来的叫参数组,用来针对不同的工具设定参数

         datadir=/var/lib/mysql                       --数据文件存放的目录

         socket=/var/lib/mysql/mysql.sock  --socket文件是用于本地连接mysql数据库的接口文件,远程连接的话就要通过TCPIP协议

         user=mysql                                  --管理mysql的系统用户

         # Default to using old password format for compatibility with mysql 3.x

         # clients (those using the mysqlclient10 compatibility package).

         old_passwords=1                                --用于兼容3.x版本的密码格式,老密码格式为16

 

         [mysqld_safe]

         log-error=/var/log/mysqld.log                   --日志文件

         pid-file=/var/run/mysqld/mysqld.pid       --pid文件

 

         --注意,pid文件和socket文件是服务启动成功后才会有的

 

         [client]               --针对客户端登录时的参数组

         password=123                   --客户端登录时直接使用123这个密码了

 

-----------------------------------------------------------------

三、二进制版安装

 

已经编译过的版本和rpm版一样功能已经定制好了,相当于windows下的绿色版,只需要解压即可运行。但linux下要手动做一些操作

 

1、添加用户mysql和用户组mysql

         groupadd mysql

         useradd -g mysql mysql

2、解压tar

         tar -xvf mysql-5.1.36-linux-i686-glibc23.tar.gz -C /usr/local

3、改名为mysql

         cd /usr/local

         mv mysql-5.1.36-linux-i686-glibc23/ mysql

4、修改属组

         chown mysql.mysql -R /usr/local/mysql

5、安装初始化

         /usr/local/mysql/scripts/mysql_install_db --datadir=/usr/local/mysql/data --user=mysql

 

-----------------------------------------------------------------

四、源码版

 

安装过程比较麻烦,要求技术水平高,但能自己去定制需要的功能,生产环境下尽量使用这种版本

 

安装过程:

 

1、添加用户mysql和用户组mysql

         groupadd mysql

         useradd -g mysql mysql

2、解压tar

         tar -xvf mysql-5.0.33.tar.gz -C /usr/src

 

3、编译

         编译前准备:

         a、开发工具和开发库这两个组要安装

         yum groupinstall "开发工具" "开发库"

 

         bdf -h 查看一下空间是否够

 

         # ./configure

         --prefix=/usr/local/mysql                  --指定安装目录

         --enable-local-infile                            --允许外部表格数据导入到数据库中

         --with-charset=gbk                            --字符集

         --with-extra-charsets=gb2312,utf8        --扩展字符集

         --with-pthread                                     --线程库

         --with-libwrap                                      --支持tcp_trapper

         --with-mysqld-ldflags=-all-static     --静态编译可以把性能提高5%10%

         --with-client-ldflags=-all-static        --静态编译可以把性能提高5%10%

         --with-low-memory                            --支持低内存,避免内存限制

         --with-mysqlmanager                        --多启动的管理器,可分布出多个mysql服务器

         --with-big-tables                        --大表支持

         --with-example-storage-engine               --存储引擎参数

         --with-archive-storage-engine                 --存储引擎参数

         --with-csv-storage-engine                --存储引擎参数

         --with-blackhole-storage-engine  --存储引擎参数      

         --with-ndbcluster                      --存储引擎参数

         --with-federated-storage-engine              --存储引擎参数

 

4、安装

         # make ;make install

 

5、修改配置文件

         mkdir /usr/local/mysql/etc      --建立一个存放配置文件的目录

         vim /usr/local/mysql/etc/my.cnf     --编写my.cnf

 

                   [mysqld]

                   port=3307                                    --端口不要和rpm版的3306冲突,这里使用3307

                   datadir=/data                              --数据文件存放目录

                   socket=/var/run/mysqld/mysql5.socket --这里的mysql5是自定义的

                   pid-file=/var/run/mysqld/mysql5.pid

                   log=/var/log/mysqld/mysql5.log

                   log-err=/var/log/mysqld/mysql5-err.log

 

6、建立配置文件里所写的相关目录,并修改相应的权限

 

# mkdir /data   /var/run/mysqld/  /var/log/mysqld

 

# chown mysql.mysql /data  /var/log/mysqld /var/run/mysqld/ /usr/local/mysql/  -R

 

7、配置服务脚本

# cp /usr/src/mysql-5.0.33/support-files/mysql.server /etc/init.d/mysql5    --拷贝服务脚本模版到正确的位置

 

# vim /etc/init.d/mysql5  --修改使之指向新编写的配置文件

         conf=/usr/local/mysql/etc/my.cnf   --修改这句

 

# chmod 755 /etc/init.d/mysql5  --给服务脚本加执行权限

 

 

8、初始化数据库,第一次都需要初始化

# /usr/local/mysql/bin/mysql_install_db --datadir=/data/ --user=mysql

 

9、启动服务,并登录

/etc/init.d/mysql5  start

 

 

 

五、常用mysql命令行工具介绍:

 

ls /usr/local/mysql/bin/   --都在此目录下

 

 

1mysql         一个命令行客户端程序,可以批处理方试执行sql语句,还可以用于恢复

 

# /usr/local/mysql/bin/mysql < /mysql.sql

Database

information_schema

mysql

source

test

# /usr/local/mysql/bin/mysql <<EOF

> show databases;

> Database

information_schema

mysql

source

test

 

2mysqld      服务启动时的程序,

   mysql_safe   mysqld上增加了一些安全特性,它可以读[mysqld]参数组和[mysql_safe]参数组,现在都是用这种方式来启动的

 

 /usr/local/mysql/bin/mysqld_safe &   --可以用这种方式来启动,写到/etc/rc.local实现开机自启动

 

3mysql_install_db   初始化数据库工具

 

4mysqladmin  管理工具

 

可以用于数据库的一些状态监控

# /usr/local/mysql/bin/mysqladmin ping

mysqld is alive

 

# /usr/local/mysql/bin/mysqladmin status

Uptime: 323  Threads: 1  Questions: 2  Slow queries: 0  Opens: 11  Flush tables: 1  Open tables: 6  Queries per second avg: 0.006

 

# /usr/local/mysql/bin/mysqladmin processlist

+----+------+-----------+----+---------+------+-------+------------------+

| Id | User | Host      | db | Command | Time | State | Info             |

+----+------+-----------+----+---------+------+-------+------------------+

| 3  | root | localhost |    | Query   | 0    |       | show processlist |

+----+------+-----------+----+---------+------+-------+------------------+

 

5mysqlcheck

   myisamchk 两个工具都是用来检查,维护,优化,分析myisam表的工具

         区别:mysql运行时使用mysqlcheck,没有运行时使用myisamchk

 

6,mysqldump  导出数据,备份数据库

         导出数据还有一种方法:  select * from tab into outfile "/path/filename"

 

 

7,mysqlimport     导入数据

         load data local infile   也可以导入数据

 

8,mysqlhotcopy   热备份工具

 

9mysqlbinlog  二进制日志读取工具

 

10mysqlbug  收集bug信息,传给官方

 

11mysqld_multi   mysql多启动

 

12 mysql_fix_privilege_tables  修复权限表,一般升级数据库后,要用些命令刷新

 

 

 

六、mysql内部命令

 

登录

mysql -u root -p123

 

mysql> show databases;                   --默认有三个库

+--------------------+

| Database           |

+--------------------+

| information_schema |

| mysql              |

| test               |

 

mysql> use mysql;            --使用这个库,或者叫进入这个库

 

mysql> show tables;                  --查看当前库所拥有的表

 

mysql> select user();        --查看当前登录用户

 

mysql> show engines;  --对比一下两边的引擎

 

mysql> show variables; --查看所有变量

 

mysql> show variables like "have%";      --可以查看支持的引擎的情况,like是模糊查询

 

 

注意事项:

 

1、下载的源码包的MD5值问题,以防有木马等存在

         md5sum /etc/passwd      --可以使用md5sum这个命令来检测文件或者软件包的md5

 

 

修改密码三种方法:

第一种:

# mysqladmin -u root password "123"    --root用户登录密码改为123

# mysql

ERROR 1045 (28000): Access denied for user 'root'@'localhost' (using password: NO)

 

# mysql -p123  --参数与密码之间没有空格

        

# mysql -p         --不想明文登录就使用这种方式

Enter password:

 

 

 

第二种:

mysql> update mysql.user set password=password("456") where user="root" and host="localhost";      --使用sql语句在数据库内部直接修改用户密码表,password()

 

是一个密码加密函数

mysql> flush privileges;   --修改过密码后都要记得刷新权限表

 

 

第三种:

mysql> set password for 'root'@'localhost'=password('123'); --使用此操作语句也可以修改密码,修改后不需要刷新权限表

 

忘记密码如何修改

 

1,可以在配置文件里加上

skip-grant-tables     --注意写到[mysqld]参数组下,表示跳过授权

 

也可以[root@hu ~]# /usr/local/mysql/bin/mysqld_safe --skip-grant-tables &

 

 

2/etc/init.d/mysql5  reload

 

/usr/local/mysql/bin/mysql    --登录就不需要密码,进去改密码

 

3,改完后记得去掉skip-grant-tables重新reload

 

 

 

 

 

 

 

 

Logo

瓜分20万奖金 获得内推名额 丰厚实物奖励 易参与易上手

更多推荐