重整旗鼓新开张,mysql第一天

    技术2022-05-13  20

    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

     

     

     

     

     

     

     

     


    最新回复(0)