多学一点(六)――在Linux下安装配置MySQL

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

   

你可能感兴趣的:(linux,mysql)