书到用时方恨少

Linux 环境下安装MYSQL5

上一篇 / 下一篇  2007-09-10 11:59:04 / 个人分类:数据库

安装目录:/usr/lcoal

[root@localhost local]# tar -zxvf mysql-5.1.6.tar.gz
[root@localhost local]# ln -s mysql-5.1.6 mysql
[root@localhost mysql-5.1.6]#./configure \
> --prefix=/usr/local/mysql
> --with-tcp-port=3309
> --with-unix-socket=/tmp/mysql.sock
> --with-charset=gbk
> --with-extra-charsets=all

选项说明:
--prefix=/usr/local/mysql是指安装mysql的路径
这里我安装的路径是/usr/local/mysql,你可以指定不同的路径
--with-extra-charsets=all 让mysql支持多语言
常用的还有
--with-unix-socket-path=指定mysql.sock存放路径,如果不加这个参数的,默认mysql.sock存放路径是/tmp/mysql.sock
其他的还有很多,我也不懂。这里我只是指定了2个参数。

congfigure之后,就开始编译了

[root@localhost mysql-5.1.6]#make
如果你确信以上的的步骤符合你的系统的话可以把编译和安装命令一起输入:
[root@localhost mysql-5.1.6]#make && make install

编译结果没有出错的话,那么安装mysql工作我们已经完成了一半了。接着
[root@localhost mysql-5.1.6]# make install
完成安装。

我们得把文件my.cnf文件放到/etc/目录下。让mysql服务器启动时能找到它。
(当安装了多个MYSQL后,我们会把my.cnf文件拷贝后 安装目录下)
安装好mysql后,配制文件应该在/usr/local/mysql/share/mysql目录中,
配制文件有几个,有my-huge.cnf my-medium.cnf my-large.cnf my-small.cnf
,不同的流量的网站和不同配制的服务器环境,当然需要有不同的配制文件了。
一般的情况下,my-medium.cnf这个配制文件就能满足我们的大多需要;
[root@localhost mysql-5.1.6]# cp /usr/local/mysql/share/mysql/my-medium.cnf /etc/my.cnf

接着创建MySQL授权表, 否则数据库也是启动不了。
mysql_install_db,这个命令的用途就是做这个的。
mysql_install_db这个命令应该已经安装到了/usr/local/mysql/bin这个目录中。

[root@localhost mysql]#bin/mysql_install_db

看看mysql目录下是不是多了一个 var 目录,在到var目录里面看看,是不是还有两个目录 mysql test ,mysql目录下应该有一些文件,test目录应该是空的。
现在 var 目录下只有两个目录 没有别的文件,那是因为我们还没有启动mysql
[root@localhost mysql-5.1.6]# /usr/local/mysql/bin/mysqld_safe &
[1]+ Exit 1 /usr/local/mysql/bin/mysqld_safe
[root@localhost mysql-5.1.6]#
看到上面的信息表示我们已经成功启动了mysql
刚才启动mysql命令是初始化启动方式,以后的启动我们不会使用这个命令。

重点
在启动mysql过程中你可能会遇到和下面类似的这种情况:

[root@localhost mysql]# bin/mysqld_safe &
[1] 14587
[root@localhost mysql]# Starting mysqld daemon with databases from /usr/local/mysql/var
STOPPING server from pid file /usr/local/mysql/var/localhost.localdomain.pid
050407 01:44:15 mysqld ended
[1]+ Done bin/mysqld_safe

这时我们应该看看错误记录文件
localhost.localdomain.err
位置在/usr/local/mysql/var/下面。寻找出错的原因,或则把错误信息发布到网络,请求别人的帮助。
说道这里我还要嘱咐一下新手,因为我为此增经感到恼怒。不要把求助贴的标题写的过于简单,如:求助、 请帮忙、救救我。
如果无法准确表达要求助的信息标题,最好的办法是把错误信息作为标题,这样别人不用看具体的内容就知道是否能帮助你。以前我就因为我不懂,因此无法得到求助,以至我故意去诋毁某个论坛,也导致我的帐号被K。

好了看看错误消息:

[root@localhost mysql]# more /usr/local/mysql/var/localhost.localdomain.err
050407 01:47:18 mysqld started
/usr/local/mysql/libexec/mysqld: File './localhost-bin.1' not found (Errcode: 13
)
050407 1:47:18 [ERROR] Could not use localhost-bin for logging (error 13). Turn
ing logging off for the whole duration of the MySQL server process. To turn it o
n again: fix the cause, shutdown the MySQL server and restart it.
050407 1:47:18 InnoDB: Operating system error number 13 in a file operation.
InnoDB: The error means mysqld does not have the access rights to
InnoDB: the directory.
InnoDB: File name ./ibdata1
InnoDB: File operation call: 'create'.
InnoDB: Cannot continue operation.
050407 01:47:18 mysqld ended

如果出现这种错误消息,说明是数据库目录权限的问题造成的。也就是无法在数据库的目录(var目录)中创建 ibdat
al 文件。这时我们只要改变一下var目录的权限就可以了
[root@localhost mysql]#chmod -R 1777 var/

再次启动mysql,我们到 var 目录看看是不是多了几个文件
ibdata1
ib_logfile0
ib_logfile1

localhost.localdomain.err 这个就是刚才启动失败的错误日志,既然成功了,
我们可以删除它,以后再次出现错误的话,系统会重建错误日志,这样查找错误也会比较容易。不过实际的网络管理中不推荐这样做。

以后我们的启动可以从mysql的脚本中启动,在 /usr/local/mysql/share/mysql/目录下有一个 启动mysql的文件 mysqld.server
我们可以把他复制到/etc/rc.d/init.d/目录并且改名为mysql

[root@localhost mysql]#cp mysqld.server /etc/rc.d/init.d/mysql

启动
/etc/rc.d/init.d/mysql start
停止
/etc/rc.d/init.d/mysql stop
重启:
/etc/rc.d/init.d/mysql restart

如果启动的时候,报出没有权限的提示。
[root@localhost mysql]# chmod +x /etc/rc.d/init.d/mysql
就可以了。
验证一下mysql是不是真的启动了,最好的办法就是用客户端去连接mysql


[root@localhost mysql]# bin/mysql

Welcome to the MySQL monitor. Commands end with ; or \g.
Your MySQL connection id is 14 to server version: 5.0.2-alpha

Type 'help;' or '\h' for help. Type '\c' to clear the buffer.

mysql>

启动成功

看看是不是有2个数据库,应该和var目录下的2个目录名字一样
mysql
test

mysql> show databases
-> ;
+----------+
| Database |
+----------+
| mysql |
| shuifu |
| test |
+----------+
3 rows in set (0.00 sec)

我这里已经有3个数据库了,shuifu 是我昨天建立的,不要误会。
刚才我为什么我输入的命令没有被执行?因为我没有输入 ;
; 符号 是mysql结束符,你想让mysql执行你的指令就必须输入 ;

mysql> exit
Bye
[root@localhost mysql]#
退出数据库。
差点忘了还要给数据库加密码
在mysql/bin目录下有个mysqladmin工具是用来管理和操作mysql用的,我们用他来给 root 加上密码
[root@localhost mysql]#bin/mysqladmin -uroot password 123456
这样我们就给root设置了 123456 这个密码

再次登录
[root@localhost mysql]# bin/mysql
上次我们使用这个命令连接mysql,看看密码是否生效。
[root@localhost mysql]# bin/mysql
ERROR 1045 (28000): Access denied for user 'root'@'localhost' (using password: NO)
[root@localhost mysql]#
进不去了,说明密码设置成功。

我们在用密码试试,这时应该说明是什么用户登录,这里我们用的是 root 这个用户。

[root@localhost mysql]# bin/mysql -uroot -p
Enter password: 这里密码是不显示的,不要按错键盘就行
Welcome to the MySQL monitor. Commands end with ; or \g.
Your MySQL connection id is 18 to server version: 5.0.2-alpha

Type 'help;' or '\h' for help. Type '\c' to clear the buffer.

mysql>

顺便说几个管理数据库的常用命令,看到论坛里有不少问如何导入数据库的贴子。
查看数据库:
mysql> show databases

新建数据库:
mysql> create database [新的数据库名]

删除数据库:
mysql> drop database [要删除的数据库名]

指定一个数据库为当前数据库
mysql>use [数据库名]

备份数据库:
[root@localhost mysql]# /usr/local/mysql/bin/mysqldump -uroot -p 123456 > /root/shuifu.sql
Enter password: 这里输入数据库的密码
这个命令就是备份上面的 shuifu 这个数据库
备份的文件名就是 shuifu.sql

导入数据库:
[root@localhost mysql]#/usr/local/mysql/bin/mysqldump -uroot -p 123456 < /home/shuifu.sql
Enter password:
这个命令就是把刚才我们备份的shuifu.sql这个数据库文件导入到数据库中。
注意看清楚< >,应该知道了吧,< 导入。 > 导出。

TAG: mysql5 linux MySQL

歆然 引用 删除 lizhm   /   2007-09-10 12:16:49
会遇到的问题:
1:数据库端口的修改
请修改:my.cnf文件,将port属性对应的值修改就好了。
[client] [mysqld]部分两处都要修改。

2:启动的mysqld_safe 的时候,找不到mysql.sock
默认情况下:mysql.sock 在 /tmp/mysql.sock 中
请修改:my.cnf文件socket属性的值

3:启动的时候找不到var或data 目录下的文件
请修改:
# cd /usr/local/mysql
# chown -R root . (设定root可以访问/usr/local/mysql目录)
# chown -R mysql var (设定mysql用户能访问/usr/local/mysql/var目录,该目录中存放mysql的数据库文件)
# chown -R mysql var/. (设定mysql用户能访问/usr/local/mysql/var目录下的所有文件)
# chown -R mysql var/mysql/. (设定mysql用户能访问/usr/local/mysql/var/mysql目录下的所有文件)
# chgrp -R mysql . (设定mysql组能访问/usr/local/mysql目录)

4:导入数据的时候,找不到相对应的字符集
一直没有找到解决问题的方法。
后来用 mysql administator 导入数据成功了。
 

评分:0

我来说两句

Open Toolbar