1.下载、安装 MySQL :
[[email protected]~]# cd /usr/local/src
[[email protected]]# wget http://syslab.comsenz.com/downloads/linux/mysql-5.1.40-linux-i686-icc-glibc23.tar.gz
[[email protected]]# tar -zxvf mysql-5.1.40-linux-i686-icc-glibc23.tar.gz
[[email protected]]# mv mysql-5.1.40-linux-i686-icc-glibc23 /opt/mysql
创建 shell 为 /sbin/nologin 的 mysql 用户:
[[email protected]]# useradd -s /sbin/nologin mysql
[[email protected]]# mkdir -p /data/mysql
[[email protected]]# chown -R mysql:mysql /data/mysql
[[email protected]]# cd /opt/mysql
[[email protected]]# ./scripts/mysql_install_db --user=mysql --datadir=/data/mysql
注:在这一步中,可能会报如下错误信息——
Installing MySQL system tables..../bin/mysqld: error while loading shared libraries: libaio.so.1……
这是因为缺少libaio 库而导致 mysql_install_db 失败,只要使用 yum 命令安装后再次执行 mysql_install_db 即可:
[[email protected]]# yum install -y libaio
[[email protected]]# cp support-files/my-large.cnf /etc/my.cnf
[[email protected]]# cp support-files/mysql.server /etc/init.d/mysqld
[[email protected]]# chmod 755 !$
[[email protected]]# vim !$
修改其中的两行,原内容分别如下:
basedir=
datadir=
修改后内容如下:
basedir=/opt/mysql
datadir=/data/mysql
保存退出。其中,basedir设置为 MySQL 的安装目录,对于 MySQL 来说,它的默认安装目录为/usr/local/mysql ,如果已经安装到了该目录下,则无需特意设置 basedir ,否则像本例中,将 MySQL 安装到了/opt/mysql 下,basedir 则要设置为 /opt/mysql 。同理,将 datadir 设置为和前面 mysql_install_db 中对应的 /data/mysql 。
将 mysqld 添加到服务:
[[email protected] mysql]#chkconfig --add mysqld
[[email protected]]# chkconfig mysqld on
启动 MySQL :
[[email protected] mysql]#service mysqld start
出现下列信息代表MySQL安装完成,已经启动:
Starting MySQL.SUCCESS!
最后,修改/etc/profile 文件,将 MySQL 下的 bin/ 目录添加到 PATH 中:
[[email protected]]# vim /etc/profile
exportPATH=$PATH:/opt/mysql/bin
[[email protected]]# source !$
这样一来,以后我们在使用 MySQL 命令时都无需再使用绝对路径了。
2.配置MySQL :
占位,之后再来补充这部分内容,敬请期待。
3. MySQL 常用操作:
3.1 初次使用:
默认情况下,MySQL 的 root 用户是没有密码的,我们在使用MySQL 前的第一件事就是为其 root 用户设置密码:
[[email protected] ~]# mysqladmin -u rootpassword ‘newpasswd’
设置完成后,连接 MySQL 数据库(使用 MySQL的 root 用户登录时可以省略 -u root):
[[email protected] ~]# mysql -uroot -p //等同于 mysql -p
Enter password:
输入刚刚设置的密码即可登录 root 用户,可以执行如下常用操作:
查看都有哪些库 show databases;
查看某个库的表 use db; show tables;
查看表的字段 desc tb;
查看建表语句 show create table tb;
当前是哪个用户 select user();
当前库 select database();
创建库 create database db1;
创建表 create table t1 (`id` int(4),`name` char(40));
查看数据库版本 select version();
查看mysql状态 show status;
修改mysql参数 showvariables like ‘max_connect%‘; set global max_connect_errors = 1000;
查看mysql队列 showprocesslist;
创建普通用户并授权 grant all on *.* to user1 identified by‘123456‘;
grant all on db1.* to ‘user2‘@‘10.0.2.100‘ identified by ‘111222‘;
grant all on db1.* to ‘user3‘@‘%‘ identified by ‘231222‘;
更改密码 update mysql.user set password=password("newpwd") where user=‘username‘ ; flush privileges;
查询 select count(*) frommysql.user; select * from mysql.db; select * from mysql.db where host like‘10.0.%‘;
插入 update db1.t1 set name=‘aaa‘where id=1;
清空表 truncate table db1.t1;
删除表 drop table db1.t1;
删除数据库 drop database db1;
修复表 repair table tb1 [use frm];
3.2 备份与恢复:
使用如下命令进行数据库备份:
[[email protected] ~]# mysqldump -uroot -pdbname > db_bak.sql
使用如下命令进行数据库恢复:
[[email protected] ~]# mysql -uroot -p dbname < db_bak.sql
恢复的前提是 dbname 库在数据库中存在,否则需要先创建dbname 库。
除了上面提到的一次将整个数据库备份下来,还可以一次只备份一个数据库中的一张表,使用如下命令:
[[email protected] ~]# mysqldump -uroot -pdbname tabelname > tb_bak.sql
进行数据库恢复时,与备份整个数据库时相同:
[[email protected] ~]# mysql -uroot -p dbname < tb_bak.sql
恢复的前提也是 dbname 库在数据库中存在,而tablename 表不一定要存在。
在默认情况下,这种备份是带有原数据库 / 表中的数据的,如果只想备份表结构,只需要加上 -d 参数:
[[email protected] ~]# mysqldump -uroot -p -ddbname > db_structure_bak.sql
为了避免备份 / 恢复时字符集不同可能导致的乱码,可以在备份 / 恢复时指定字符集,使用 --default-character-set 参数:
[[email protected] ~]# mysqldump -uroot -p--default-character-set=utf-8 dbname > db_bak.sql
[[email protected] ~]# mysql -uroot -p--default-character-set=utf-8 dbname < db_bak.sql
3.3 忘记 MySQL 的密码:
修改 /etc/my.cnf 文件:
[[email protected] ~]# vim /etc/my.cnf
在 [mysqld] 部分内容中添加如下内容:
skip-grant
保存退出,重启 MySQL :
[[email protected] ~]# service mysqld restart
Shutting down MySQL. SUCCESS!
Starting MySQL. SUCCESS!
之后可以直接以无密码状态进入 MySQL :
[[email protected] ~]# mysql -uroot //等同于 mysql
mysql> use mysql;update user u setu.password=password(‘newpassword’) from user u where u.user=’root’;
Query OK, 3 rows affected (0.00 sec)
Rows matched: 3 Changed: 3 Warnings: 0
之后再次修改 /etc/my.cnf 文件,将添加的skip-grant 选项删除或者注释掉,再次重启 MySQL 即可:
[[email protected] ~]# service mysqld restart
补充:在知道现有密码的情况下,如果想要改为新密码,不需要进入 MySQL 数据库中执行 update语句来重置密码,使用 mysqladmin 命令:
[[email protected] ~]# mysqladmin -uroot -ppassword ‘newpasswd’