主要内容:
- 安装、卸载和配置mysql
- 配置和管理msyql
- 终端启动mysql和停止mysql
- 检查mysql进程是否开启
- 登陆和退出
- 忘记root密码的解决方案
- 查看数据库、表、列、存储过程等信息命令——Show
- 创建用户、赋访问权限、修改密码
- 数据定义、数据操作语句
- 数据的备份与恢复
- 外部IP无法访问问题
1、安装、卸载和配置mysql
见(http://www.cnblogs.com/wuhou/archive/2008/09/28/1301071.html)
三种安装方式:
1.从网上安装sudo apt-get install mysql-server。装完已经自动配置好环境变量,可以直接使用mysql的命令。
注:建议将/etc/apt/source.list中的cn改成us,美国的服务器比中国的快很多。
2.安装离线包,以mysql-5.0.45-linux-i686-icc-glibc23.tar.gz为例。
3.二进制包安装:安装完成已经自动配置好环境变量,可以直接使用mysql命令
网上安装和二进制包安装比较简单,重点说安装离线包。
1.groupadd mysql
2.mkdir /home/mysql
3.useradd -g mysql -d /home/mysql mysql
4.copy mysql-5.0.45-linux-i686-icc-glibc23.tar.gz到/usr/local目录
5.解压:tarzxvf mysql-5.0.45-linux-i686-icc-glibc23.tar.gz
6.ln -s mysql-5.0.45-linux-i686-icc-glibc23 mysql
7.cd /usr/local/mysql
8.chown -R mysql .
9.chgrp -R mysql .
10.scripts/mysql_install_db --user=mysql (一定要在mysql目录下执行,注意输出的文字,里边有修改root密码和启动mysql的命令)
11.为root设置密码:./bin/mysqladmin -u root password 'passw0rd'
卸载mysql
2、配置和管理msyql:
设置字符集(以utf8为例):
2) 修改my.cnf,在[client]下添加default-character-set=utf8
3) 在[server]下添加default-character-set=utf8,init_connect='SETNAMES utf8;'
4) 重启mysql。
注:只有修改/etc下的my.cnf才能使client的设置起效,安装目录下的设置只能使server的设置有效。
二进制安装的修改/etc/mysql/my.cnf即可
3、终端启动mysql和停止mysql
见(http://www.2cto.com/os/201205/132796.html)
sudo start mysql #手动的话这样启动
sudo stop mysql #手动停止
若无效可通过service启动和停止:
sudo service mysql start
sudo service mysql stop
4、检查mysql进程是否开启
要想检查mysqld 进程是否已经开启,可以使用下面的命令:
pgrep mysqld
如果进程开启,这个命令将会返回该进程的id;否则不返回任何信息。
5、登陆和退出
见(http://www.2cto.com/os/201205/132796.html)
使用命令mysql(登录后使用命令:mysql–help即可查看该命令的具体使用语法)
如下是简单的使用样例:
mysql –u xxxx –p;
这里xxxx表示用户名(默认情况下会有个root用户,密码为空)。然后会提示你输入密码Enterpassword:,此时输入密码xxxxxx(在linux下输入密码时,不会显示任何字符),密码正确则进入mysql。例如:
最后,输入“quit;”即可退出mysql。此时,终端会输出Bye作为反馈。
6、忘记root密码的解决方案
参见(http://www.cnblogs.com/allenblogs/archive/2010/08/12/1798247.html)
主要思想:修改其配置文件,使登陆mysql时跳过权限检查,修改好密码后,再将之前做的修改去掉。如下:
1.首先确认服务器出于安全的状态,也就是没有人能够任意地连接MySQL数据库。
因为在重新设置MySQL的root密码的期间,MySQL数据库完全出于没有密码保护的
状态下,其他的用户也可以任意地登录和修改MySQL的信息。可以采用将MySQL对
外的端口封闭,并且停止Apache以及所有的用户进程的方法实现服务器的准安全
状态。最安全的状态是到服务器的Console上面操作,并且拔掉网线。
2.修改MySQL的登录设置:
登陆设置保存在文件my.cnf中。该文件位于根目录下的文件夹etc下mysql文件下(这是发生在二进制安装的情况下,若非此情况,文件my.cnf在文件夹etc下)。关于目录的切换见文档“linux下文件目录相关命令.docx”,使用vi(或vim)编辑器进行编辑。Vi编辑器的使用见网页
(http://www.eepw.com.cn/article/48018.htm)或文档“linux下vi编辑器使用手册.docx”
切换到my.cnf所在目录之后,输入“sudovi my.cnf”即可进行编辑;输入“vimy.cnf”虽然也能打开,但是是只读模式,不能保存所做的修改,除非使用管理员账户登录linux系统。
在[mysqld]的段末加上一句(若无此段,则需要添加这样的一个段):skip-grant-tables
例如:
[mysqld]
datadir=/var/lib/mysql
socket=/var/lib/mysql/mysql.sock
skip-grant-tables
保存并且退出vi。
3.重新启动mysqld
手动停止mysql,在手动启动mysql。即分别输入命令“sudostop mysql”,“sudostart mysql”。
4.登录并修改MySQL的root密码
以root账户登录,然后修改对应的密码,例如:输入命令:
“update mysql.user setpassword=PASSWORD(“knowledge”) where user=”root”;”
“flush privileges;”
“quit;”
这里表示将原来所有root用户密码全部设置为”knowledgee”。注意:这里必须使用PASSWORD函数,这个函数保证了在登录时输入的密码为”knowledge”,否则linux会将”knowledge”作为将初始密码串加密后得到的结果直接进行保存,这样,在登录时输入”knowledge”是不能通过验证的。
Flushprivileges 将刷新所做的修改,否则,做的修改不会生效。
5.将MySQL的登录设置修改回来
用同样的方式打开文件my.cnf。
删除之前所做的修改。
保存并且退出vi。
6.重新启动mysqld
手动停止mysql,在手动启动mysql。即分别输入命令“sudostop mysql”,“sudostart mysql”。
7、查看数据库、表、列、存储过程等信息命令——Show
STATUS指令
该指令(需要登录之后才能使用此命令查看)可以用来查看当前数据库的状态信息,具体语法可以输入指令:status–help进行查看。
如输入:status可以查看版本等信息,其输出类似如下:
SHOW指令
见(http://blog.knowsky.com/250872.htm)
SHOW 指令(‘[..]’里的可选) ,指令结尾的“;”代表语句结束符,若一条语句书写完毕,并且希望mysql立刻执行,那么必须加上“;”。
#显示mysql中所有数据库的名称
show databases;
#显示mysql中的相关表
show tables [ from db_name];
#查看存储过程状态
show procedure status;
#显示表中列名称
show columns from table_name [ fromdatabase_name ] ;
或showcolumns from database_name.table_name;
#显示一个用户的权限,显示结果类似于grant 命令
show grants for user_name;
#显示表的索引
show index from table_name;
#显示一些系统特定资源的信息,例如,正在运行的线程数量
show status [from db_name];
#显示系统变量的名称和值
show [ global] variables;
#显示系统中正在运行的所有进程,也就是当前正在执行的查询大多数用户可以查看他们自己的进程,但是如果他们拥有process权限,就可以查看所有人的进程,包括密码
show processlist;
#显示当前使用或者指定的database中的每个表的信息信息包括表类型和表的最新更新时间
show table status;
#显示服务器所支持的不同权限
show privileges;
#显示create database 语句是否能够创建指定的数据库
show create database database_name;
#显示create database 语句是否能够创建指定的数据库
show create table table_name;
#显示安装以后可用的存储引擎和默认引擎
show engies;
#显示innoDB存储引擎的状态
show innodb status;
#显示BDB存储引擎的日志
show logs -----这个已经被遗弃了
#显示最后一个执行的语句所产生的错误、警告和通知
show warnings;
#只显示最后一个执行语句所产生的错误
show errors;
#显示安装后的可用存储引擎和默认引擎
show [storage] engines;
查看数据库端口号
(http://blog.chinaunix.net/uid-15463753-id-2847046.html)
登陆后运行如下命令即可查看数据库端口号:
show variables like'port';
8、创建用户、赋访问权限、修改密码
见(http://www.linuxidc.com/Linux/2008-01/10699.htm)
建议使用grant语法来创建新用户:
grant 权限1,权限2,...权限non 数据库名称.表名称to 用户名@用户地址identified by '连接口令';
权限1,权限2,...权限n代表select,insert,update,delete,create,drop,index,alter,grant,references,reload,shutdown,process,file等14个权限。
当权限1,权限2,...权限n被allprivileges或者all代替,表示赋予用户全部权限。
当数据库名称.表名称被*.*代替,表示赋予用户操作服务器上所有数据库所有表的权限。
用户地址可以是localhost,也可以是ip地址、机器名字、域名。也可以用'%'表示从任何地址连接。
创建新用户时,’连接口令’不能为空,否则创建失败。可以通过再次执行grant语句来实现对现有用户权限信息的修改。
例如:
grant select on mysql.user todeepSearch@localhost identified by “deepSearch”;
flush privileges;
新建一个新用户:deepSearch,密码(口令)为:deepSearch,登陆主机为:localhost,其权限为:对数据库mysql中的表user有查询权限。
若想修改,则可以再次执行grant语句:
grant select on mysql.db todeepSearch@localhost identified by “”;
flush privileges;
注意,此时deepSearch用户增加了对数据库mysql内表db的查询权限,但同时,密码被修改为空。若要密码不被修改,则需要每次指定相同的密码。即密码会在每次执行grant时被更新。“flushprivileges;”是必须要有的,因为这一句用来刷新权限信息,否则所做的修改不会生效,即新用户无法登陆,旧用户的之前信息未真正更新。
可以通过向mysql的user表里添加一条记录或者使用grant语句来实现(当前的所有数据库名称、数据库内所有表名称、表的列名称都可以通过show命令查看)。如添加一个deepSearch用户,密码为deepSearch,登陆主机为”localhost”。就可以如下书写:
insert intomysql.user(host,user,password) values(“host”,“deepSearch”,PASSWORD(“deepSearch”));
flush privileges;
注意:这里必须使用PASSWORD函数,这个函数保证了在登录时输入的密码为”deepSearch”,否则linux会将”deepSearch”作为将初始密码串加密后得到的结果直接进行保存,这样,在登录时输入”deepSearch”是不能通过验证的。
但是本方法并未制定新创建的用户的权限,故需要进一步的设置其权限,即修改mysql.user表中新添加记录的其他字段值。
9、数据定义、数据操作语句
详见mysql官方语法(http://dev.mysql.com/doc/refman/5.1/zh/sql-syntax.html)
11、数据的备份与恢复
导入外部数据文本:
1.执行外部的sql脚本
参见(http://blog.csdn.net/vebasan/article/details/7619911)
如需要执行当前目录下的deepSearch文件夹下的input.sql文件里的所有mysql语句,可以使用source命令或者\.命令,具体格式为:\. <filename> | source <filename>。本例中应输入如下命令:
source deepSearch/input.sql;
或者
\. deepSearch/input.sql
注意:使用此命令需要登录到mysql中。
2.数据传入命令 loaddata local infile "[文件名]"into table [表名];
备份数据库:(dos下)
mysqldump --opt school>school.bbb
mysqldump -u [user] -p [password]databasename > filename (备份)
mysql -u [user] -p [password] databasename< filename (恢复)
12、外部IP无法访问问题
(http://blog.csdn.net/xc635960736/article/details/7581342)
(此方案暂时无效,原因还在调查中)
设置mysql 的配置文件
/etc/mysql/my.cnf
找到 bind-address =127.0.0.1 将其注释掉,使得不再只允许本地访问;或将其改为bind-address =0.0.0.0。然后重启mysql。接着再为指定用户赋予一定的访问权限,使用grant命令,详细见“8”。