在Debian下管理MySQL

本文转载自:http://blog.csdn.net/lllxy/article/details/1712936(有改动)

 

1. 停止mysql服务的几种方法
     1): $:>/usr/local/mysql/bin/mysqladmin -u root -p shutdown
     2): $:>/usr/local/mysql/support-files/mysql.server stop
     3): 也可以先通过ps -ef 查找出mysql的进程ID,通过kill -9 (id)来停止进程
2. 启动mysql也还可以通过如下方式来启动
         $:>/usr/local/mysql/support-files/mysql.server start
3. mysqladmin还可以用来修改密码
    格式: mysqladmin -u用户名 -p旧密码 password 新密码
(特别注意: password前面没有横杠,-p和旧密码之间不要有空格)
     #给root加个密码123,由于开始root没有密码,所以-p 旧密码可以省略。
     $:>/usr/local/mysql/bin/mysqladmin -u root password 123
4.MySql中的用户授权
    当我们在使用MySql的时候,都必须有一个数据库MySql用来管理权限,这个数据库最好只让root用户可以看见, 其他的用户都不可见。
    MYSQL环境中的命令,所以后面都带一个分号作为命令结束符。
    1) grant格式:
       grant <privileges> on 数据库名称.表名称 to 用户名@用户地址 identified by ‘连接口令’with          grant   option

      <privileges>代表select,insert,update,delete,create,drop,index,alter,grant,references,reload,shutdown,process,file  等14个权限。

      当<privileges>被all privileges或者all代替,表示赋予用户全部权限   当<privileges>被usage代替时,只允许登陆,其他什么都不允许做
     当数据库名称.表名称被*.*代替,表示赋予用户操作服务器上所有数据库所有表的权限。
     用户地址可以是localhost,也可以是ip地址、机器名字、域名。也可以用’%’表示从任何地址连接。
     ‘连接口令’可以为空

    如果在命令后面带上: WITH GRANT OPTION,表示该用户有向其他用户传递其所具有的权利的权限

     mysql>grant select,insert,update,delete,create,drop on vtdc.employee to joe@10.163.225.87 identified by   ‘123′;
     给来自10.163.225.87的用户joe分配可对数据库vtdc的employee表进行select,insert,update,delete,create,drop等操作的权限,并设  定口令为123。

     mysql>grant all privileges on vtdc.* to joe@10.163.225.87 identified by ‘123′;
     给来自10.163.225.87的用户joe分配可对数据库vtdc所有表进行所有操作的权限,并设定口令为123。

     mysql>grant all privileges on *.* to joe@10.163.225.87 identified by ‘123′;
     给来自10.163.225.87的用户joe分配可对所有数据库的所有表进行所有操作的权限,并设定口令为123。

     mysql>grant all privileges on *.* to joe@localhost identified by ‘123′;
     给本机用户joe分配可对所有数据库的所有表进行所有操作的权限,并设定口令为123。

     你想myuser使用mypassword从任何主机连接到mysql服务器的话。
     GRANT ALL PRIVILEGES ON *.* TO ‘myuser’@’%’ IDENTIFIED BY ‘mypassword’ WITH GRANT OPTION;

     你想允许用户myuser从ip为192.168.1.3的主机连接到mysql服务器,并使用mypassword作为密码
     GRANT ALL PRIVILEGES ON *.* TO ‘myuser’@’192.168.1.3′ IDENTIFIED BY ‘mypassword’

     增加一个用户test1密码为abc,让他可以在任何主机上登录,并对所有数据库有查询、插入、修改、删除的权限。首先用以root用户连入MYSQL,然后键入以下命令:
     grant select,insert,update,delete on *.* to test1@"%" Identified by "abc";

    增加一个用户test2密码为abc,让他只可以在localhost上登录,并可以对数据库mydb进行查询、插入、修改、删除的操作(localhost   

  指本地主机,即MYSQL数据库所在的那台主机),这样用户即使用知道test2的密码,他也无法从internet上直接访问数据库,只能通过MYSQL主机上的web页来访问了。
    grant select,insert,update,delete on mydb.* to test2@localhost identified by "abc";
    如果你不想test2有密码,可以再打一个命令将密码消掉。
    grant select,insert,update,delete on mydb.* to test2@localhost identified by "";

  建立一个名为test的用户,他可以使用口令sa从localhost连接MySQL,并仅仅可以访问名为MyDB的数据库的全部 内容(并可以将此权限赋予其他用户),这可以使用下面的GRANT命令: 
mysql> GRANT ALL ON MyDB.* TO test@localhost  IDENTIFIED BY "sa"  WITH GRANT OPTION; 
  现在改变这个用户的口令为123,命令格式如下:
  mysql> GRANT USAGE ON *.* TO test@local IDENTIFIED BY "123"; 
  我们没有赋予任何另外的权限(the USAGE权限只能允许用户登录),但是用户已经存在的权限不会被改变。

   2) 直接通过insert函数往mysql数据库的user表中加入一条记录。
     增加一个用户,用户名为jeffrey,密码为biscuit。
     mysql> Insert INTO mysql.user (Host,User,Password)
     VALUES(‘%’,’jeffrey’,PASSWORD(‘biscuit’));
      mysql> FLUSH PRIVILEGES
     修改root用户的登陆方式
     mysql>update user set host = ‘%’  where user =’root’;
     mysql>flush privileges;
5. 显示命令
    show databases;   //显示数据库
    use mysql
    show tables;   //显示mysql数据库中的表
    describe user;  //显示mysql数据库中user表的结构.

6. MySQL 忘记口令的解决办法

    如果 MySQL 正在运行,首先杀之
    启动 MySQL,就可以不需要密码就进入 MySQL 了。
    $:> /usr/local/mysql/bin/safe_mysqld –skip-grant-tables & ;
    $:> mysql -u root -p
    Enter password:[直接回车]
    mysql>use mysql
    mysql>update user set password=password("sa") where user="root";
    mysql>flush privileges;
    mysql>exit;
    重新杀 MySQL ,用正常方法启动mysql使用密码sa就可以登陆。

MySQL还原和备份

       据库的导入导操作相对某些人来说还是蛮频繁的,针对不同需要,有时候需要整个表做备份,有时候又可能要整个数据库做备份。mysql平时用得不多(公司用的oracle),这里把MySQL的数据备份和还原简单的做个介绍,免得以后自己都忘了。。。以下操作都是命令行下的,木办法,哥就希望命令行了。

    简单的mysql命令这里就不多做介绍了,以下就直切主题了。

一、备份(导出)数据库

三种形式的备份

1.导出整个数据库

比较适合做数据库迁移,操作起来也不复杂。

用法:mysqldump -u 用户名 -p 数据库名 > 导出的文件名

mysqldump -u root -p test > test_bak.backup

备份成功!你可以以文本方式打开备份出来的文件,发现了木有,有木有?

2.导出一个表

用法:mysqldump -u 用户名 -p 数据库名 表名> 导出的文件名

mysqldump -u root -p wordpressDB > wordpressDB.wp_posts.backup

3.导出一个数据结构

数据结构是神马东东,呃,结构嘛,就是空有表的结构而没有表数据,从生产环境往测试环境同步数据的时候可能会用到,毕竟生产上的数据太大,测试环境估计放不下完整数据,所以先建好表再稍微插入点数据就够了,这个语句稍微复杂点,相关参数后面有介绍。

用法:mysqldump -uroot -p -d –add-drop-table 数据库名>导出文件名

mysqldump -u root -p -d --add-drop-table test > test.structure.backup

参数介绍

-d 表示没有数据

–add-drop-table 表示在每一个create语句之前添加一个drop table语句

二、还原(导入)数据库

1.source命令

用法:mysql -uroot –p

mysql>use 数据库名;

mysql>source 备份的数据库文件;

2.-D参数直接导入

mysql -uroot –D 数据库名< 备份的数据库文件

mysql-u root -p -D test < test_bak.backup;

三、数据的导入、导出

刚才说的都是数据库的导入导出,还有单纯的数据的导入导出方法

1.数据的导入

数据格式:字段数据之间用tab键隔开,null值用n来代替

比如说给student表添加一条记录,格式如下:

1    zhangsan    male    1986-11-24

保存为stu_data.data文件

用法:

load data infile "文件名" into table 表名;

或者load data infile "文件名" into table 数据库名.表名

mysql>use test;

mysql>load data infile "stu_data.data" into table test.student;

2.数据的导出

用法:mysql>select * from 数据库.数据表名 into outfile "文件名"

mysql>select * from test.t_student into outfile "stu_data.out"

 

注意:本文中涉及的文件操作都没有加上路径,所有的输入输出文件默认在当前目录下(嘻嘻,少敲点字母不是,不过这可不是个好习惯,大家千万不要学我哦)

MySQL添加新用户和数据库(命令行模式和phpmyadmin)

一、命令行模式

首先要声明一下:一般情况下,修改MySQL密码,授权,是需要有mysql里的root权限的。
注:本操作是在WIN命令提示符下,phpMyAdmin同样适用。
用户:phplamp
用户数据库:phplampDB

1.新建用户

//登录MYSQL
@>mysql -u root -p
@>密码
//创建用户
mysql> insert into mysql.user(Host,User,Password) values(‘localhost’,’phplamp’,password(‘1234’));
//刷新系统权限表
mysql>flush privileges;
这样就创建了一个名为:phplamp  密码为:1234  的用户。

//退出后登录一下
mysql>exit;
@>mysql -u phplamp -p
@>输入密码
mysql>登录成功

2.为用户授权

//登录MYSQL(有ROOT权限)。我里我以ROOT身份登录.
@>mysql -u root -p
@>密码
//首先为用户创建一个数据库(phplampDB)
mysql>create database phplampDB;
//授权phplamp用户拥有phplamp数据库的所有权限
@>grant all privileges on phplampDB.* to phplamp@localhost identified by ‘1234’;
//刷新系统权限表
mysql>flush privileges;
mysql>其它操作

//如果想指定部分权限给一用户,可以这样来写:
mysql>grant select,update on phplampDB.* to phplamp@localhost identified by ‘1234’;
//刷新系统权限表。
mysql>flush privileges;

mysql> grant 权限1,权限2,…权限n on 数据库名称.表名称 to 用户名@用户地址 identified by ‘连接口令’;

权限1,权限2,…权限n代表select,insert,update,delete,create,drop,index,alter,grant,references,reload,shutdown,process,file等14个权限。
当权限1,权限2,…权限n被all privileges或者all代替,表示赋予用户全部权限。
当数据库名称.表名称被*.*代替,表示赋予用户操作服务器上所有数据库所有表的权限。
用户地址可以是localhost,也可以是ip地址、机器名字、域名。也可以用’%’表示从任何地址连接。
‘连接口令’不能为空,否则创建失败。

例如:
mysql>grant select,insert,update,delete,create,drop on vtdc.employee to joe@10.163.225.87 identified by ‘123′;
给来自10.163.225.87的用户joe分配可对数据库vtdc的employee表进行select,insert,update,delete,create,drop等操作的权限,并设定口令为123。

mysql>grant all privileges on vtdc.* to joe@10.163.225.87 identified by ‘123′;
给来自10.163.225.87的用户joe分配可对数据库vtdc所有表进行所有操作的权限,并设定口令为123。

mysql>grant all privileges on *.* to joe@10.163.225.87 identified by ‘123′;
给来自10.163.225.87的用户joe分配可对所有数据库的所有表进行所有操作的权限,并设定口令为123。

mysql>grant all privileges on *.* to joe@localhost identified by ‘123′;
给本机用户joe分配可对所有数据库的所有表进行所有操作的权限,并设定口令为123。

3.删除用户

@>mysql -u root -p
@>密码
mysql>DELETE FROM user WHERE User=”phplamp” and Host=”localhost”;
mysql>flush privileges;
//删除用户的数据库
mysql>drop database phplampDB;

4.修改指定用户密码

@>mysql -u root -p
@>密码
mysql>update mysql.user set password=password(‘新密码’) where User=”phplamp” and Host=”localhost”;
mysql>flush privileges;
mysql>quit;

二、利用phpmyadmin

1、成功登陆后的首页里填入新建的数据库名”sqlname”,点击“创建”来新建数据库(如果创建不能成功,说明你没有管理权限)
2、然后点击左边工具栏上部的“主目录”,然后点击右边栏里的“权限”
3、然后点击右边栏里的“添加新用户”
4、输入数据库用户名username、主机、密码后,点击下部的“执行”(除非你添加的是管理员,否则无需设置下面的“全局权限”)。
5、然后在“按数据库指定权限”的下拉框中找到刚才添加的数据库”sqlname”,选定后自动跳转到下一页面。
6、在“按数据库指定权限”里全部点选,点击“执行”确定。
7、下一页面上部出现了“您已经更新了’username’@’localhost’的权限”时,说明操作成功。

 

本文来源:http://www.cnblogs.com/aidd2008/archive/2009/04/16/1437609.html

Debian搭建Lighttpd+php+mysql+simplelog博客站

一直以来都是买白菜价的VPS来挂vagex,没指望它赚钱也就赚个主机的钱,不用自己掏腰包买主机~。因为主机有512M(突发768M)的内存,发现只是挂机的话,实在有点浪费,于是决定继续压榨它们的剩余价值~才有了在这个博客站点的诞生。(simplelog功能确实比较弱,这不,没多久又换成wordpress了)

因为当初挂机平台用的Debian(内存占用比CentOS小多了),所以建站也是以Debian为基础。

由于挂vagex本身也是比较占内存的,所以,一切以小内存占用为宗旨~自然而然的轻量级选手Lighttpd成为首选目标。用来建博客,本来wordpress功能强大是个不错的选择,可是wordpress实在是个吃资源的大户,于是果断pass掉,最后选中了另一个轻量级选手Simple-Log。至于mysql,出于节省内存和充分利用的考虑,我把mysql装到了另外一台主机上(挂机网赚一台怎么够嘛~)。

第一步:安装平台软件

其实,Debian下安装各个软件还是比较简单的,基本都是傻瓜式的apt-get

1.Lighttpd

apt-get install lighttpd,这个没啥好说的,一路next~

2.php

apt-get install php5-cgi 这个也没啥好说的,当然你也可以装一些其他可能需要用到的模块,比如我想再顺便搭个api,于是curl之类的模块就也装上了

3.mysql

换到另外一台机器上B,apt-get install mysql-server,安装过程中会让你输入root用户的密码~傻瓜式安装。

第二步:配置各平台软件

别以为傻瓜式的apt-get就万事ok了,还需要配置下在才能使用滴~

首先,配置php

#vi /etc/php5/cgi/php.ini 在 php.ini的最后加上一行 cgi.fix_pathinfo = 1

其次,配置lighttpd支持php

#vi /etc/lighttpd/lighttpd.conf

增加上fastcgi模块:

server.modules = (
“mod_access”,
“mod_alias”,
“mod_accesslog”,
“mod_rewrite”,  #默认这个是注释掉的,以为simplelog需要用到,所以我放开了
“mod_fastcgi”,  #这个就是加上的fastcgi模块,你也可以根据需要添加其他模块
)

更改默认主页文件的顺序,将index.html放在index.php之前(根据你要安装的程序需要,这个我没改)

index-file.names = ( “index.php”, “index.html”,“index.htm”, “default.htm” )

添加数据传输方式(这个是必须的要不跑不起来)

server.network-backend=”writev“

然后在最后加上:

fastcgi.server = ( “.php” => (( “bin-path” => “/usr/bin/php5-cgi”,”socket” => “/tmp/php.socket” )))

其实这个只是用的默认设置,也能够进行自定义其他设置的,下面是一个例子:

server.modules += ( “mod_fastcgi” )   #添加fastcgi模块
fastcgi.server = (  “.php” =>
((  “socket” => “/tmp/php-fastcgi.socket”,
“bin-path” => “/usr/local/bin/php-cgi”,
“min-procs” => 1,
“max-procs” => 1,
“max-load-per-proc” => 4,
“bin-environment” => (
“PHP_FCGI_CHILDREN” => “2”,
# “PHP_FCGI_CHILDREN” => “64”,//这里进程数自己看着办
“PHP_FCGI_MAX_REQUESTS” => “10000” ),
“bin-copy-environment” => (
“PATH”, “SHELL”, “USER” ),
“broken-scriptfilename” => “enable”,
“idle-timeout” => 20
)))

至此,基本的配置工作都做完了,重启lighttpd,/etc/init.d/lighttpd restart

可以放个探针上去,看看是不是正常了~ 探针:下载

第三步,部署Simple-Log

Simple-Log的部署工作还是比较简单的,基本就是一路next,前提是你把数据库整好~好吧,我太懒了,就直接用命令行搞的,你要是有闲得慌可以搞个工具试试~

切换到机器B(就是部署了mysql那个机器上)

首先,基本的mysql命令你得会吧~ mysql -u root -p //用root用户登录,回车后会让你输入密码

你可以使用use mysql;来切换到系统数据库实例下也可以不切换但在后面的语句里必须在表名前加上实例名

(1)添加用户:insert into mysql.user(Host,User,Password) values(‘建站的IP’,’simplelog’,password(‘你想用的密码’));

如果mysql和lighttpd、php是建在一个服务器上的,可以把“建站的IP”直接用localhost代替

添加完后记得刷新权限:flush privileges;

如果是建的本地用户,你也可以退出root用户用新建用户登录下试试 mysql -u simplelog -p

(2)添加数据库:create database simplelogDB;

添加完了记得为用户赋权:

grant all privileges on simplelogDB.* to simplelog@建站的IP identified by ‘用户密码’;

同样,本地的用户可以把建站Ip换成localhost,这个语句是把所有的权限都赋予了,也可以只赋部分权限,不过我懒得折腾,如果你觉得这样不够安全那就赋给它合理的权限吧。

同样,完事后记得刷新下权限:flsuh privileges;

至此,数据库整完了,把下载下来的simplelog上传到 /var/www 目录下,这个是lighttpd的默认目录,你也可以在lighttpd.conf配置文件里指定目录。

打开站点http://你的域名/ 这个时候会自动进入安装,一路下一步就好,填上你的数据库IP地址、用户、密码之类的,如果是mysql和lighttpd、php部署在一块,数据库地址直接用localhost就行,如果是远程mysql,点击下一步没反应,可能是mysql连接有问题,你可以在网站服务器(我是机器A)上安装个mysql客户端,远程连接下试试

apt-get install mysql-client

mysql -h 数据库ip -u 用户名 -p

如果能连接成功,说明你的php和lighttpd设置是有问题的,检查下~

最后,开启静态重定向,可以在simplelog的说明文件里找到lighttpd的rewrite rules,把它们添加的 /etc/lighttpd/lighttpd.conf里面,重启lighttpd即可。

(lighttpd是不支持.htaccess的哦,所以得加到配置文件里才行,另外,记得检查开启了rewrite模块哟)