搜档网
当前位置:搜档网 › Linux下安装MySQL及基本操作

Linux下安装MySQL及基本操作

安装非编译版的mysql5.1 rc for linux版整理

一、安装前预检查
安装mysql之前,先查看系统是否安装了mysql及其版本,以root用户登陆,执行如下的命令:
#rpm -qa | grep mysql

如果出现一些mysql的相关信息,说明以安装,则用下列命令御载:
#rpm -e mysql –nodeps

二、下载linux下已编译的mysql5.1安装包
https://www.sodocs.net/doc/de6508906.html,官方网站上有各种版本的mysql,我们用的是已经编译过的mysql5.1的版本,
即下载MySql Community Server 5.1 的Linux (non RPM packages)版本。
具体网址:
https://www.sodocs.net/doc/de6508906.html,/get/Downloads/MySQL-5.1/mysql-5.1.29-rc-linux-i686-glibc23.tar.gz/from/pick#mirrors

三、上传并解压文件
我们把mysql-5.1.29-rc-linux-i686-glibc23.tar.gz上传到root用户下的/usr/local目录,
并用下列命令解压 #tar -xzvf mysql-5.1.29-rc-linux-i686-glibc23.tar.gz
文件名称太长,建立一个链接:
#ln -s mysql-5.1.29-rc-linux-i686-glibc23 mysql

四、开始执行安装步骤
#groupadd mysql //创建一个mysql组
#useradd -g mysql mysql //创建一个mysql用户
#cd /usr/local/mysql //进入mysql的安装目录
#chown -R mysql . //设置目录usr/local/mysql的所属用户是mysql
#chgrp -R mysql . //设置目录usr/local/mysql的所属组是mysql

#cp support-files/https://www.sodocs.net/doc/de6508906.html,f /etc/https://www.sodocs.net/doc/de6508906.html,f //拷贝文件
#scripts/mysql_install_db --user=mysql //初始化数据库

#chown -R root . //设置目录usr/local/mysql的所属用户是root
#chown -R mysql data //设置/usr/local/mysql/data的所属用户是mysql

#bin/mysqld --user=mysql & //启动mysql

******以上步骤如果出现错误,删除解压目录,重新解压缩,然后在次执行(四)

五、登陆测试并增加远程访问授权

因首次安装时mysql的root没有密码,所以直接登陆
#/usr/local/mysql/bin/mysql
Welcome to the MySQL monitor. Commands end with ; or \g.
Your MySQL connection id is 1 to server version: 4.0.16-standard
Type 'help;' or '\h' for help. Type '\c' to clear the buffer.
mysql>

******出现了“mysql>”提示符,恭喜你,安装成功!
================================================================
非首次登陆用如下命令,附录会有详细说明
#/usr/local/mysql/bin/mysql -u root -p
Enter password:(输入密码即可)
================================================================
mysql>show databases;
mysql>grant all privileges on *.* to root@"%" identified by '888888';
//(创建可以在任何机器上访问任何数据库的root用户并且赋予权限)
mysql>flush privileges;
mysql>use mysql;
mysql>select Host,User,Password from user;

输出结果一般如下:
+--

--------------+------------+-------------------------------------------+
| Host | User | Password |
+----------------+------------+-------------------------------------------+
| localhost | root | *6BB4837EB74329105EE4568DDA7DC67ED2CA2AD9 |
| prdfl03 | root | |
| 127.0.0.1 | root | |
| localhost | | |
| % | root | *6BB4837EB74329105EE4568DDA7DC67ED2CA2AD9 |
+----------------+------------+-------------------------------------------+
远程连接测试可以使用mysql管理软件 EMS SQL Manager for mysql


六、简易操作(附录)

附录1、注册命令(注册后就不需要输入命令的全路径)
1、在sbin下直接加入命令链接
# ln -s /usr/local/mysql/bin/mysql /sbin/mysql
# ln -s /usr/local/mysql/bin/mysqladmin /sbin/mysqladmin
2、在用户的profile下加入
export PATH=$PATH:/usr/local/mysql/bin


附录2、启动与关闭管理
1、手动启动命令
#bin/mysqld --user=mysql & //启动mysql
2、关闭命令
#/usr/bin/mysqladmin -u root -p shutdown
3、添加自动启动选项
(1)检查mysqld是否在系统自动启动列表中
#/sbin/chkconfig --list | grep mysql
(2)创建mysql服务
# cd /usr/local/mysql
# cp support-files/mysql.server /etc/rc.d/init.d/mysqld
# chmod 700 /etc/rc.d/init.d/mysqld
(3)把MySQL添加到你系统的启动服务组里面去
# chkconfig --add mysqld
(4)把MySQL从启动服务组里面删除
#/sbin/chkconfig --del mysql
4、添加完自启动后手动启动与关闭命令
启动:#/etc/init.d/mysql start 或者# service mysqld start
关闭:# service mysqld stop
重启:# service mysqld restart


附录3、登录密码修改
MySQL默认没有密码,安装完毕增加密码的重要性是不言而喻的。
1、设置初始密码命令
格式:/usr/local/mysql/bin/mysqladmin -u root password new-password
# /usr/local/mysql/bin/mysqladmin –u root password 888888
2、更改root密码
# /usr/local/mysql/bin/mysqladmin -u root –p 888888 password 123456
3、测试是否修改成功
(1)不用密码登录
# /usr/local/mysql/bin/mysql
ERROR 1045: Access denied for user: 'root@localhost' (Using password: NO)
显示错误,说明密码已经修改。
(2)用修改后的密码登录
# mysql -u root -p
Enter password: (输入修改后的密码123456)
Welcome to the MySQL monitor. Commands end with ; or \g.
Your MySQL connection id is 4 to server version: 4.0.16-standard
Type 'help;' or '\h' for help. Type '\c' to clear the buffer.
mysql>
成功!
注:这是通过mysqladmin命令修改口令,也可

通过修改库来更改口令。

4、修改用户hunte登陆密码的三种方法
在MySQL中修改一个用户(比如叫"hunte")的密码,可以用如下3个办法:
(1)在控制台上输入
# mysql -u root mysql
#用mysql客户程序
mysql> UPDATE user SET password=PASSWORD("new password") WHERE user='hunte';
mysql> FLUSH PRIVILEGES;
mysql> QUIT

(2)在控制台上输入
# mysql -u root mysql
mysql> SET PASSWORD FOR hunte=PASSWORD('new password');
mysql> QUIT

(3)直接在控制台上输入
# mysqladmin –u hunte –p ’old password’ password ‘new password’


附录4、用户管理
1、增加新用户。
格式:grant select on 数据库.* to 用户名@登录主机 identified by "密码";

(1)增加一个用户 test1 密码为 abc123,让他可以在任何主机上登录,并对所有数据库
有查询、插入、修改、删除的权限。首先用以 root 用户连入 MySQL,然后键入以下命令:
mysql>grant select, insert, update, delete on *.* to test1@"%" Identified by "abc123";
Query OK, 0 rows affected (0.03 sec)

******但这样增加的用户是十分危险的,如某个人知道test1的密码,那么他就可以在internet上
的任何一台电脑上登录你的mysql数据库并对你的数据为所欲为了,解决办法见(2)。

(2)增加一个用户test2密码为abc123,让他只可以在localhost上登录,并只可以对数据库
进行查询、插入、修改、删除的操作(localhost指本地主机,即MYSQL数据库所在的那台主机),
这样用户即使用知道test2的密码,他也无法从internet上直接访问数据库,只能通MYSQL主机上
来访问了。 命令如下:
mysql>grant select, insert, update,delete on mydb.* to test2@localhost identified by "abc123";
Query OK, 0 rows affected (0.03 sec)

如果你不想test2有密码,可以再打一个命令将密码消掉。 命令如下:
mysql>grant select, insert, update, delete on mydb.* to test2@localhost identified by "";


附录5、登陆管理,连接MySql
格式: mysql -h 主机地址 -u 用户名 -p 用户密码
1、连接到本机上的MYSQL。
mysql安装的主目录的bin下,键入命令:
#mysql -u root -p(如果刚安装好 MySQL,超级用户 root 是没有密码的,故直接输入mysql,回车即可进入MySQL了),

MySQL的提示符是:
Enter password:
Welcome to the MySQL monitor.? Commands end with ; or \g.
Your MySQL connection id is 7 to server version: 5.0.7-beta-nt
Type 'help;' or '\h' for help. Type '\c' to clear the buffer.
mysql>

2、连接到远程主机上的 MySQL。
假设远程主机的IP为:192.168.1.1,用户名为root,密码为abcd123。则键入以下命令:
#mysql -h 110.110.110.110 -u root -p abcd1

23
出现提示符:
Enter password:
Welcome to the MySQL monitor.? Commands end with ; or \g.
Your MySQL connection id is 9 to server version: 5.0.7-beta-nt
Type 'help;' or '\h' for help. Type '\c' to clear the buffer.
mysql>


附录6、非编译版本的初始目录结构
1、数据库目录
/usr/local/mysql/data 或者是/var/lib/mysql/ 或者是/usr/local/mysql/var

2、配置文件
/usr/local/mysql/support-file //mysql.server命令及*.cnf配置文件

3、相关命令
/usr/local/mysql/ //mysqladmin mysqldump等命令

4、启动脚本(需要手工cp才能生成mysqld)
/etc/rc.d/init.d/ //mysqld的存放目录


附录7、日志管理
1、开启错误日志 (在[safe_mysqld]项下添加)
#cd /etc/rc.d/init.d
#vi /etc/https://www.sodocs.net/doc/de6508906.html,f
[safe_mysqld]
err-log=/var/log/mysqld/err.log

2、开启常规日志和更新日志 (在[mysqld]项下添加)
#vi /etc/https://www.sodocs.net/doc/de6508906.html,f
[mysqld]
log=/var/log/mysqld/log.log
log-update=/var/log/mysqld/update.log

3、创建日志文件并设置权限
#mkdir /var/log/mysqld
#touch /var/log/mysqld/err.log /var/log/mysqld/log.log /var/log/mysqld/update.log
#chown -R mysql.mysql /var/log/mysqld
#service mysqld restart

说明:
错误日志包含了服务器写入标准错误输出设备的所有消息,同时还包括了mysql服务的启动和关闭事件
常规日志用来记录有关mysql服务器运行的常规信息,包括用户的连接、查询及其他各种时间
更新日志用来记录修改数据库的查询信息,包括所有涉及数据库修改的SQl语句的查询记录
建议调试结束后关闭日志


附录8、更改MySQL目录
MySQL默认的数据文件存储目录为/usr/local/mysql/data。假如要把目录移到/home/data下需要进行下面几步:
1、home目录下建立data目录
#mkdir /home/data

2、把MySQL服务进程停掉:
#mysqladmin -u root -p shutdown 或者 #service mysqld stop

3、把/usr/local/mysql/data整个目录移到/home/data
#mv /usr/local/mysql/data /home/data/
这样就把MySQL的数据文件移动到了/home/data下

4、编辑MySQL的配置文件/etc/https://www.sodocs.net/doc/de6508906.html,f
为保证MySQL能够正常工作,需要指明mysql.sock文件的产生位置。
修改 socket=/tmp/mysql.sock一行中等号右边的值为:/home/mysql/mysql.sock 。操作如下:
#vi https://www.sodocs.net/doc/de6508906.html,f 
-------------------------------------------------------------------------------------------------------
# The MySQL server
[mysqld]
port = 3306
#socket = /tmp/mysql.sock(原内容,为了更稳妥用“#”注释此行)
socket = /home/data /mysql.sock (加上此行)
-------------------------------------------------------------------------------------------------------

5、修改MySQL启动脚本/etc/rc.d/init.d/mysqld
修改:
datadir= //原值

为空,经判断后被赋值为/usr/local/mysql/data
一行中,等号右边的路径改成你现在的实际存放路径:home/data/mysql。
-------------------------------------------------------------------------------------------------------
# vi /etc/rc.d/init.d/mysql
datadir= //注释此行
datadir=/home/data/mysql //加上此行
-------------------------------------------------------------------------------------------------------

6、重新启动MySQL服务
#/etc/rc.d/init.d/mysql start 或者 #service mysqld restart
如果工作正常移动就成功了,否则对照前面的6步再检查一下。



附录9、备份与恢复
1、备份
例如:将上例创建的aaa库备份到文件back_aaa中
#cd /home/data/mysql 
//进入到库目录,本例库已由/usr/local/mysql/data转到/home/data/mysql
#mysqldump -u root -p --opt aaa > back_aaa
2、恢复
#mysql -u root -p ccc < back_aaa


对于mysql来说,常见的备份和恢复办法如下,执行:
#cd /usr/local/mysql/bin
格式:mysqldump 需要导出的数据库名 >想备份成的文件名 -u 用户名 -p

如我想用root用户导出一个名为falcon_search的数据库为一个falcon_search.mysql,那么我就可以这么做拉
#./mysqldump falcon_search >falcon_search.mysql -u root -p

Enter password: ******
******输入你的root用户密码就可以拉

备份和恢复往往是孪生兄弟或姐妹
下面我们来恢复

恢复:mysqldump 需要导入为什么数据库名 <备份好的文件名 -u 用户名 -p

假如我要恢复刚才备份的数据库,那么我可以这么做
./mysqldump falcon_search
Enter password: ******
******输入你的root用户密码就可以拉

3、到这里,我们发现mysql数据库的备份和恢复比较简单,是吧?
不过这种备份和恢复只能在mysql内部进行哦,也就是说这样备份的数据不容易恢复到其他的数据库里头去.
其实mysqldump还有更多强大和灵活的数据导入功能,如果与load命令想结合将很灵活的实现不同数据库之间的备份和恢复.

下面我们就把上面连接中几个常用的东西扣出来,主要介绍如何导出数据库的表结构(create语句),数据(insert语句),
表结构定义和文本内容,然后介绍如何执行类似批处理文件sql脚本,以及如何把文本内容导入到数据库内.
[注:我同样以一个数据库名为falcon_search的数据库来介绍]

(1)首先,我们导出数据库的表结构
mysqldump -d falcon_search >falcon_search.sql


我们发现falcon_search.sql中的内容如下:

-- MySQL dump 9.10
--
-- Host: localhost Database: falcon_search
-- ------------------------------------------------------
-- Server version 4.0.18-nt

--
-- Table structure for table `cat_tab`
--

CREATE TABLE cat_tab (
id int

(11) NOT NULL default '0',
cat char(100) binary NOT NULL default '',
postfix char(1) binary default NULL,
pid int(11) default NULL,
ipid int(11) NOT NULL default '0',
acctime int(11) default NULL,
PRIMARY KEY (id,ipid)
) TYPE=MyISAM;

--
-- Table structure for table `file_tab`
--

CREATE TABLE file_tab (
file char(100) binary NOT NULL default '',
postfix char(4) binary NOT NULL default '',
pid int(11) default NULL,
ipid int(11) default NULL,
acctime int(11) default NULL
) TYPE=MyISAM;

--
-- Table structure for table `key_tab`
--

CREATE TABLE key_tab (
skey char(100) binary NOT NULL default '',
acctime int(11) default '0',
UNIQUE KEY skey (skey)
) TYPE=MyISAM;

--
-- Table structure for table `site_tab`
--

CREATE TABLE site_tab (
id int(11) NOT NULL default '0',
site varchar(15) NOT NULL default '',
port int(11) default '21',
user varchar(15) NOT NULL default 'anonymous',
pw varchar(15) NOT NULL default 'falcon',
acc enum('N','Y') default 'N',
indb enum('N','Y') default 'N',
info text,
PRIMARY KEY (id)
) TYPE=MyISAM;

里头有详细的信息,包括数据库名,以及各个表的结构.

(2)现在我们导出数据(insert语句)
mysqldump -t falcon_search >falcon_search.txt

注意:这里的falcon_search.txt里头的内容是一些insert语句,
也是sql脚本,在创建好对应的数据库后可以直接执行

补充:导出为文本格式的数据还有一个办法
例如,我要导出file_tab中的所有数据到falcon_search.txt
select * into outfile "falcon_search.txt" from file_tab;
注意:默认路径不再是bin目录下,而是mysql/data路径下,其实你可以自己指明路径
到这里我们很灵活的获得了数据库的集中形式了.

(3)直接导出上面两项到一个文件中
mysql falcon_search >falcon_search.sql

这里的falcon_search.sql将包括上面两项内容

(4)导出表结构以及对应表中数据的文本文件
mysqldump -T . falcon_search

生成8个文件,分别是4个表的定义文件,和四个表数据对应的文本文件
注意这个时候的参数哦,有两项包括-T(大写)以及.(当前路径,指明导出数据存放的路径,你完全可以指明为其他的路径)


4、下面得介绍一下备份的孪生兄弟[恢复]哦
我们分别根据我们已经得到的备份文件来进行恢复
[注:假设我们下面进行的恢复操作是完全在一个刚安装的mysql上进行的]

(1)第一种情况
假如我们得到的是表结构(creat语句)以及数据(insert语句)的sql脚本,即我们上面得到的
falcon_search.sql和falcon_search.txt那么我们先根据脚步里头的表结构脚本里头的数据
库名创建相应的数据库
create database falcon_search;
然后先在falcon_search.txt文件的最前面添加上一句
use falcon_search;

接着直接执行表结构对应的sql脚本
my

sql 这样我们就已经创建好了数据库和表拉,剩下的是插入数据
同样我们先加入这么一句到falcon_searh.txt的最前面
use falcon_search;

接着类似执行
mysql
这样我们就进行第一种情况的恢复工作


(2)第二种情况
假如我们得到仅有falcon_search.sql,即里头即包含了表结构也包含了数据,那么我们恢复工作更简单拉
先创建falcon_search数据库
然后在falcon_search.sql语句的最前面添加一句
use falcon_search;
接着执行falcon_search.sql脚本就可以
mysql

(3)第三种情况
假如我们获得的是每个表的表结果文件(表名.sql)以及各个表的数据对应的文本文件
我们进行的工作实质上同上

先创建数据库[根据表结构文件中database的名]
然后在每个sql脚本前面加上
use falcon_search;
接着执行各个sql脚本,创建各个表
然后我们的重要内容是把文本文件导入到各个表中拉

这里重点介绍一下
需要用load data local infile "文本文件(如果不是当前路径请指明绝对路径)" into table 表名;
说明,其中local指明为从本地文件导入

假如我要把当前目录下(bin)的site_tab.txt里头的内容导入到site_tab中
只要先进入mysql的命令行下
mysql>use falcon_search;
msyql>load data local infile "site_tab.txt" into table site_tab;
使用load的好处是,可以很方面通过文本文件这个途径把其他数据库中的内容导入到mysql中,
从而作到不同数据库之间数据的转换拉。

ok,到这里基本上就完了


附录10、基本的mysql操作(注意:MySQL中每个命令后都要以分号;结尾)
1、显示数据库
mysql> show databases;
+----------+
| Database |
+----------+
| mysql|
| test |
+----------+
2 rows in set (0.04 sec)
Mysql刚安装完有两个数据库:mysql和test。mysql库非常重要,它里面有MySQL的系统信息,
我们改密码和新增用户,实际上就是用这个库中的相关表进行操作。

2、显示数据库中的表
mysql> use mysql;
Database changed
mysql> show tables;
+-----------------+
| Tables_in_mysql |
+-----------------+
| columns_priv|
| db |
| func|
| host|
| tables_priv |
| user|
+-----------------+
6 rows in set (0.01 sec)

3、显示数据表的结构:
describe 表名;

4、显示表中的记录:
select * from 表名;
例如:显示mysql库中user表中的纪录。所有能对MySQL用户操作的用户都在此表中。
Select * from user;

5、建库:
create database 库名;
例如:创建一个名字位aaa的库
mysql> create databases aaa;

6、建表:
use 库名;
create table 表名 (字段设定列表);
例如:在刚创建的aaa库中建立表name,表中有id(序号,自

动增长),xm(姓名),xb(性别),csny(出身年月)四个字段
use aaa;
mysql> create table name (id int(3) auto_increment not null primary key, xm char(8),xb char(2),csny date);
可以用describe命令察看刚建立的表结构。
mysql> describe name;
+-------+---------+------+-----+---------+----------------+
| Field | Type| Null | Key | Default | Extra |
+-------+---------+------+-----+---------+----------------+
| id| int(3) | | PRI | NULL| auto_increment |
| xm| char(8) | YES | | NULL||
| xb| char(2) | YES | | NULL||
| csny | date| YES | | NULL||
+-------+---------+------+-----+---------+----------------+

7、增加记录
例如:增加几条相关纪录。
mysql> insert into name values('','张三','男','1971-10-01');
mysql> insert into name values('','白云','女','1972-05-20');
可用select命令来验证结果。
mysql> select * from name;
+----+------+------+------------+
| id | xm | xb | csny |
+----+------+------+------------+
| 1 | 张三 | 男 | 1971-10-01 |
| 2 | 白云 | 女 | 1972-05-20 |
+----+------+------+------------+

8、修改纪录
例如:将张三的出生年月改为1971-01-10
mysql> update name set csny='1971-01-10' where xm='张三';

9、删除纪录
例如:删除张三的纪录。
mysql> delete from name where xm='张三';

10、删库和删表
drop database 库名;
drop table 表名;


相关主题