1.下载、安装 MySQL :
[root@localhost ~]# cd /usr/local/src [root@localhost src]# wget http://syslab.comsenz.com/downloads/linux/mysql-5.1.40-linux-i686-icc-glibc23.tar.gz [root@localhost src]# tar -zxvf mysql-5.1.40-linux-i686-icc-glibc23.tar.gz [root@localhost src]# mv mysql-5.1.40-linux-i686-icc-glibc23 /opt/mysql
创建 shell 为 /sbin/nologin 的 mysql 用户:
[root@localhost src]# useradd -s /sbin/nologin mysql [root@localhost src]# mkdir -p /data/mysql [root@localhost src]# chown -R mysql:mysql /data/mysql [root@localhost src]# cd /opt/mysql [root@localhost mysql]# ./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 即可:
[root@localhost mysql]# yum install -y libaio [root@localhost mysql]# cp support-files/my-large.cnf /etc/my.cnf [root@localhost mysql]# cp support-files/mysql.server /etc/init.d/mysqld [root@localhost mysql]# chmod 755 !$ [root@localhost mysql]# 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 添加到服务:
[root@localhost mysql]# chkconfig --add mysqld [root@localhost mysql]# chkconfig mysqld on
启动 MySQL :
[root@localhost mysql]# service mysqld start
出现下列信息代表MySQL安装完成,已经启动:
Starting MySQL.SUCCESS!
最后,修改/etc/profile 文件,将 MySQL 下的 bin/ 目录添加到 PATH 中:
[root@localhost mysql]# vim /etc/profile
export PATH=$PATH:/opt/mysql/bin
[root@localhost mysql]# source !$
这样一来,以后我们在使用 MySQL 命令时都无需再使用绝对路径了。
2.配置MySQL :
占位,之后再来补充这部分内容,敬请期待。
3. MySQL 常用操作:
3.1 初次使用:
默认情况下,MySQL 的 root 用户是没有密码的,我们在使用MySQL 前的第一件事就是为其 root 用户设置密码:
[root@localhost ~]# mysqladmin -u root password 'newpasswd'
设置完成后,连接 MySQL 数据库(使用 MySQL的 root 用户登录时可以省略 -u root):
[root@localhost ~]# 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));
修改表名 rename table old_table_name to new_table_name;
查看数据库版本 select version();
查看mysql状态 show status;
修改mysql参数 show variables like 'max_connect%'; set global max_connect_errors = 1000;
查看mysql队列 show processlist;
创建普通用户并授权 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(*) from mysql.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 备份与恢复:
使用如下命令进行数据库备份:
[root@localhost ~]# mysqldump -uroot -p dbname > db_bak.sql
使用如下命令进行数据库恢复:
[root@localhost ~]# mysql -uroot -p dbname < db_bak.sql
恢复的前提是 dbname 库在数据库中存在,否则需要先创建dbname 库。
除了上面提到的一次将整个数据库备份下来,还可以一次只备份一个数据库中的一张表,使用如下命令:
[root@localhost ~]# mysqldump -uroot -p dbname tabelname > tb_bak.sql
进行数据库恢复时,与备份整个数据库时相同:
[root@localhost ~]# mysql -uroot -p dbname < tb_bak.sql
恢复的前提也是 dbname 库在数据库中存在,而tablename 表不一定要存在。
在默认情况下,这种备份是带有原数据库 / 表中的数据的,如果只想备份表结构,只需要加上 -d 参数:
[root@localhost ~]# mysqldump -uroot -p -d dbname > db_structure_bak.sql
为了避免备份 / 恢复时字符集不同可能导致的乱码,可以在备份 / 恢复时指定字符集,使用 --default-character-set 参数:
[root@localhost ~]# mysqldump -uroot -p --default-character-set=utf8 dbname > db_bak.sql
[root@localhost ~]# mysql -uroot -p --default-character-set=utf8 dbname < db_bak.sql
3.3 忘记 MySQL 的密码:
修改 /etc/my.cnf 文件:
[root@localhost ~]# vim /etc/my.cnf
在 [mysqld] 部分内容中添加如下内容:
skip-grant
保存退出,重启 MySQL :
[root@localhost ~]# service mysqld restart
Shutting down MySQL. SUCCESS!
Starting MySQL. SUCCESS!
之后可以直接以无密码状态进入 MySQL :
[root@localhost ~]# 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 即可:
[root@localhost ~]# service mysqld restart
补充:在知道现有密码的情况下,如果想要改为新密码,不需要进入 MySQL 数据库中执行 update语句来重置密码,使用 mysqladmin 命令:
[root@localhost ~]# mysqladmin -uroot -p password 'newpasswd'
3.4 远程连接MySQL:
默认情况下,MySQL 不允许远程连接,如果想要远程连接(如在本地 Navicat 或 MySQL Workbench 中连接 Linux 服务器中的 MySQL),需要在 MySQL下的mysql 数据库里的 user 表里插入一条记录:
INSERT INTO `mysql.user` VALUES ('%','root','*EBC18EC650950CEAF8ACD8525F17649CFF90AD98','Y','Y','Y','Y','Y','Y','Y','Y','Y','Y','Y','Y','Y','Y','Y','Y','Y','Y','Y','Y','Y','Y','Y','Y','Y','Y','Y','Y','','','','',0,0,0,0);
其中,mysq.user 表中host 和user 两个字段共同构成主键, host 设置为 % 代表可以从远程 host 连接。*EBC18EC650950CEAF8ACD8525F17649CFF90AD98代表加密后的密码,其他 Y 对应相应权限(涉及 MySQL 具体知识),这里暂且全部设置为Y 。
重启 MySQL ,即可通过 IP ,端口,用户名,密码进行远程连接:
[root@localhost ~]# service mysqld restart
注:实际使用过程中我们不会选择 insert 语句,因为 MySQL 有自己的一套用户管理命令,比如 create user 'newuser'@'%' identified by 'thepassword';用来创建用户等,详情可参考如下博客:
http://xitongjiagoushi.blog.51cto.com/9975742/1629990