您的位置:首页 > 运维架构 > Linux

linux环境下mysql数据库的安装配置及使用

2012-12-19 16:34 525 查看
mysql数据库的安装版本为:mysql-standard-5.0.27-linux-i686.tar.gzlinux环境为Red Hat Enterprise Linux 6

首先取得root权限并将mysql的tar文件复制到/usr/local目录下。具体操作如下:

cd /usr/local

su

cp /tmp/mysql-standard-5.0.27-linux-i686.tar.gz /usr/local

tar -zxvf mysql-standard-5.0.27-linux-i686.tar.gz

解压后,在/usr/local目录下有一个mysql-standard-5.0.27-linux-i686目录,我们将该目录做个软链接。

ln -s mysql-standard-5.0.27-linux-i686 mysql

以后即可通过/usr/local/mysql进入到/usr/local/mysql-standard-5.0.27-linux-i686目录

为方便起见,接下来按部操作:

1)建立mysql用户

groupadd mysql

useradd -g mysql mysql

scripts/mysql_install_db --user=mysql

chowm -R root . 此命令为修改文件的所有者

chown -R mysql data修改data文件的所有者

chgrp -R mysql .改变用户组

执行上述操作时需要注意commond后"."前是有空格的。

启动mysql

在启动mysql前需要将安装包文件中mysql.server的启动脚本复制到/etc/rc.d/init.d目录里面

cd /etc/rc.d/init.d

cp /usr/local/mysql/support-files/mysql.server mysql

注:此时的mysql是先前用此ln -s mysql-standard-5.0.27-linux-i686 mysql语句建立的软链接。

最后运行chkconfig把mysql添加到系统的启动服务组里面:

/sbin/chkconfig --del mysql

/sbin/chkconfig --add mysql

此时执行:/etc/rc.d/init.d/mysql start

执行后将会看到:

Starting MySQL SUCCESS!

执行 mysql或者mysql -u root -p

输入密码出现

mysql>

然后在mysql>后执行相应的mysql命令即可。

在进行具体操作时遇到一些问题,现做具体的记录:

创建数据库:

  create database TestData;

若创建错误或需销毁数据库执行:

  drop database TestData;

有了数据库还需要有表:

  在建表之前需要明白在哪个数据库中建的表,执行:

  use TestData;

  create table UserInfoo(UserId int,UserNamm varchar(20));

之后发现表名错误,执行

  alter table UserInfoo rename to UserInfo;

随后又发现字段错误,于是执行:

  alter table UserInfo change UserNamm UserName varchar(25);

将字段名UserNmm修改为UserName,并且其字段属性为varcahr(25);在这里也可以修改字段属性。

查看UserInfo表具体信息,执行:

  describe UserInfo;

mysql> describe UserInfo;
+----------+-------------+------+-----+---------+-------+
| Field    | Type        | Null | Key | Default | Extra |
+----------+-------------+------+-----+---------+-------+
| UserId   | int(11)     | YES  |     | NULL    |       |
| UserName | varchar(25) | YES  |     | NULL    |       |
+----------+-------------+------+-----+---------+-------+
2 rows in set (0.01 sec)
发现UserId应该是主键并且是自增的。于是执行:

  alter table UserInfo change UserId UserId int primary key not null auto_increment; 

然后再查看表 describe UserInfo;

mysql> describe UserInfo;
+----------+-------------+------+-----+---------+----------------+
| Field    | Type        | Null | Key | Default | Extra          |
+----------+-------------+------+-----+---------+----------------+
| UserId   | int(11)     | NO   | PRI | NULL    | auto_increment |
| UserName | varchar(25) | YES  |     | NULL    |                |
+----------+-------------+------+-----+---------+----------------+
2 rows in set (0.00 sec)
表的建立已基本完成,接下来往表中插入数据:

  insert into UserInfo value('2','cs001');

突然想到UserId是自增的,它的值不用写。于是删除插入的数据:

  delete from UserInfo;

表中数据全部清空,当时以为字段也没了。于是重新添加字段:

  alter table UserInfo add UserId int not null primary key auto_increment;

提示UserId重复。索性添加Age字段:

alter table UserInfo add UserAge int;

向表中添加数据:

  insert into UserInfo value('','Cs001','20');

  insert into UserInfo value('','Cs002','21');

  insert into UserInfo value('','Cs003','22');

mysql> select * from UserInfo;
+--------+----------+---------+
| UserId | UserName | UserAge |
+--------+----------+---------+
|      3 | Cs001    |      20 |
|      4 | Cs002    |      21 |
|      5 | Cs003    |      22 |
+--------+----------+---------+
3 rows in set (0.00 sec)
至此具体操作完成。

在此期间又学习到了一下命令:

更改特定字段值:

  update UserInfo set UserName='cs004' where UserId='5';

更改特定字段中的所有带有一定特性的值,例如如下则将UserName中的所有s替换为c:

mysql> update UserInfo set UserName=replace(UserName,'s','c');
Query OK, 3 rows affected (0.01 sec)
Rows matched: 3  Changed: 3  Warnings: 0

mysql> select * from UserInfo;
+--------+----------+---------+
| UserId | UserName | UserAge |
+--------+----------+---------+
|      3 | Cc001    |      20 |
|      4 | Cc002    |      21 |
|      5 | cc004    |      22 |
+--------+----------+---------+
3 rows in set (0.00 sec)


 2012/12/20

今天在学习时学习到新的内容:

数据库的备份和恢复是一个非常重要的环节,在此做详细说明:

在备份数据库时需要注意,执行数据库的备份命令是:

mysqldump -u 拥有数据库的用户名 -p 数据库名>database.bak

此命令并不是在数据库的命令行里面输入,而是在/usr/bin或者/bin目录里面,我在输入时提示:

mysqldump执行时Got error: 1045: Access denied for user 'root'@'localhost' (using password: YES) when trying to connect

很明显我没有备份数据库的权限,解决办法是先进入数据库命令行,执行:

mysql> use mysql;
Database changed
mysql> update user set password=password('new password') where user='root';
Query OK, 4 rows affected (0.00 sec)
Rows matched: 4  Changed: 4  Warnings: 0
mysql> flush privileges;
Query OK, 0 rows affected (0.00 sec)
mysql> quit
随后再进入/usr/bin目录或者/bin目录执行:

mysqldump -u 拥有数据库的用户名 -p 数据库名>database.bak
后面的database.bak也可更改为相应的目录文件。

之后若数据库丢失,首先需要在mysql里面建立一个空数据库,然后进入/usr/bin或者/bin目录,执行:

mysql -u root -p 数据库名<database.bak
即可恢复误删除的数据库。
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息