您的位置:首页 > 数据库 > MySQL

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

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

一、简介

使用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数据库的接口文件,远程连接的话就要通过TCP/IP协议
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 "开发工具" "开发库"

b、df -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/ --都在此目录下

1,mysql 一个命令行客户端程序,可以批处理方试执行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

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

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

3,mysql_install_db 初始化数据库工具

4,mysqladmin 管理工具

可以用于数据库的一些状态监控
# /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 |
+----+------+-----------+----+---------+------+-------+------------------+

5,mysqlcheck
myisamchk 两个工具都是用来检查,维护,优化,分析myisam表的工具
区别:mysql运行时使用mysqlcheck,没有运行时使用myisamchk

6,mysqldump 导出数据,备份数据库
导出数据还有一种方法: select * from tab into outfile "/path/filename"

7,mysqlimport 导入数据
load data local infile 也可以导入数据

8,mysqlhotcopy 热备份工具

9,mysqlbinlog 二进制日志读取工具

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

11,mysqld_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
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: