1. 安装
在使用MySQL之前,最先要做的就是安装。在Windows上的安装我就不说了,非常简单直接。这里说一下在Linux/UNIX系统上的安装。
当然,我指的是编译安装。使用apt或者yum安装MySQL的同学们可以不看这部分内容了。首先,在一个空白的系统上,需要安装gcc,gcc-c++,ncurses-devel,这是在CentOS 5.4上的包名称,使用其他发行版的同学,自己查找一下这三个包对应的名称,安装就可以了。去MySQL的官方网站下载MySQL源码包吧。
http://dev.mysql.com/downloads/mysql/
configure的时候需要一些参数,这些参数可以./configure –help查看说明,也可以去官方网站查询文档,这里我记录一下自己选用的一些参数含义。
静态编译 |
–enable-static –with-client-ldflags=-all-static –with-mysqld-ldflags=-all-static |
静态编译选项,据说可以提高性能13%,没有测试过。 |
以线程方式编译客户端 |
–enable-thread-safe-client |
|
去掉innodb表支持 |
–without-innodb | innodb是一种支持事务处理的表,适合企业级应用。 |
去掉isam表类型支持 |
–without-isam | isam表是一种依赖平台的表,现在很少用了。 |
取消导航调试 | –without-ndb-debug | |
日志文件目录 | –localstatedir=/usr/local/mysql/var/ | |
MySQL后缀名 | –with-server-suffix=-enterprise-gpl | 在用mysql登录的时候在版本号的后面可以看到。 |
去除诊断模式 | –without-debug | 如果用–with-debug=full编译,大多数查询慢20%。 |
大表支持 | –with-big-tables | |
字符集 | –with-extra-charsets=gbk,gb2312,utf8 | 设置支持gbk,gb2312,utf8字符集。 |
强制使用pthread库 | –with-pthread | POSIX线程库。 |
汇编 | –enable-assembler | |
默认字符集 | –with-charset=utf8 | |
使用unix套接字 | –with-unix-socket-path=/tmp/mysql.sock | 据说提高7.5%性能连接性能,所以在windows下mysql性能肯定不如unix。 |
端口 | –with-tcp-port=3306 | 指定MySQL服务将监听TCP 3306端口。 |
我的configure命令:
./configure –with-charset=utf8 -with-extra-charsets=all –prefix=/home/mysql
当然,这个命令的前提是系统中要有一个/home/mysql的文件夹,我是用创建一个名称为mysql的用户来做到这点的,而且,configure命令也是使用mysql用户运行的,添加一个mysql用户的命令很简单,下面这句可以直接复制粘贴。
sudo useradd -m -c "MySQL Server" -d /home/mysql -s /bin/bash -u 502 mysql
然后make && make install,再更改下权限:sudo chown mysql:mysql -R mysql 。
2. 配置
安装好了之后,需要运行mysql_install_db来初始化数据库。这个命令可以有不少参数,下面列一下。
–basedir=/usr/local/mysql | 默认mysql路径 |
–datadir=/usr/local/mysql/data | 默认mysql数据路径 |
–user=mysql | 默认使用mysql服务用户 |
–defaults-file=/usr/local/mysql/my.cnf | 默认配置文件 |
–pid-file=/usr/local/mysql/mysql.pid | 默认PID文件路径 |
文件名 | 说明 |
/etc/my.cnf | 全局选项 |
$MYSQL_HOME/my.cnf | 服务器相关选项 |
defaults-extra-file | 服务器启动时用–defaults-extra-file=path指定的文件 |
~/.my.cnf | 用户相关选项 |
如果未设置MYSQL_HOME,并且DATADIR中有一个my.cnf文件,BASEDIR中没有my.cnf文件,mysqld_safe将MYSQL_HOME设置为DATADIR。否则,如果未设置MYSQL_HOME并且在DATADIR中没有my.cnf,则mysqld_safe将MYSQL_HOME设置为BASEDIR。
典型情况为/usr/local/mysql/data,请注意这是配置时指定的数据目录的位置,而不是mysqld_safe启动时用–datadir指定的。运行时使用–datadir对寻找选项文件的服务器没有效果,因为服务器在处理命令行参量之前寻找这些选项。
MySQL按照上述顺序寻找选项文件,并读存在的选项文件。如果你想要使用的某个选项文件不存在,则用明文文本编辑器创建。如果存在多个选项文件,文件中指定的后读取的选项要优先文件中指定的先读取的选项。
可以从MySQL安装目录/share/mysql/下拷贝一个配置文件到mysql用户目录下,重命名为.my.cnf,我的拷贝命令:
cp share/mysql/my-medium.cnf .my.cnf
注释掉其中的skip-federated选项,如果有的话。
3. 启动和关闭
有两种启动方式:
一种是运行mysqld_safe 参数 &,例如:
mysqld_safe –defaults-file=/usr/local/mysql/my.cnf –user=mysql &
另一种是运行MySQL安装目录/share/mysql/mysql.server 参数,例如:
/home/mysql/share/mysql/mysql.server start
关闭MySQL可以kill掉进程,也可以使用/home/mysql/share/mysql/mysql.server stop 命令。
4. 命令
首先要给root设置一下密码,这个我们采用
/home/mysql//bin/mysqladmin -u root password ‘new-password’
或者
/home/mysql//bin/mysqladmin -u root -h ehost.edomain password ‘new-password’
的方式。
4.1. 创建用户
虽然创建用户有好多种方式,但是我在这里只说一种,这种记住了就可以了。
GRANT命令:
GRANT [PRIVILEGES, …] ON [database].[table] TO ‘user’@'somehost’ IDENTIFIED BY ‘password’ [WITH GRANT OPTION];
下面是几个例子:
GRANT ALL PRIVILEGES ON *.* TO ‘monty’@'localhost’ IDENTIFIED BY ‘some_pass’ WITH GRANT OPTION;
GRANT ALL PRIVILEGES ON *.* TO ‘monty’@'%’ IDENTIFIED BY ‘some_pass’ WITH GRANT OPTION;
GRANT RELOAD,PROCESS ON *.* TO ‘admin’@'localhost’;
GRANT USAGE ON *.* TO ‘dummy’@'localhost’;
其实,登陆进去之后,help grant就可以理解得到很详细的说明了。说到这里,郑重的跟大家说,多用help,多看文档,不要老用Google,哈哈