在Debian中玩转MySql

http://blog.csdn.net/lllxy/article/details/1708156


debian的安装版本:debian-40r0-i386-netinst.iso,从www.debian.org中下载

 MySql的版本mysql-max-5.0.22-linux-i686-glibc23.tar.gz,从 www.mysql.com中下载
 WinSCP软件: 把windows上的东西传递到虚拟机上

在虚拟机virtual pc 2007 或者vmware 6.0 上安装debian,这个我就不多说,在网上可以找到很多资料,如果你还是安装不了,那就给我留言把,呵呵。
  现在假设你刚刚安装完了debian,由于我这个安装版本是轻量级的,所需要的软件都必须从从网络上下载安装。比如vim, ssh,等必须从网络上安装下载。如果你的debian是通过CD的全安装的话,那么可能就不必再去安装这些软件了。现在刚安装完Debian,重起后以root用户登录。
  1. 现在我有mysql的版本,如何传递到虚拟机上?
     在网络上下载winscp软件,然后配置虚拟机和你的主机能够通讯。(希望你已经做到了虚拟机和主机之间能够通讯),由于winscp是通过ssh协议登陆到虚拟机上,因此如果在虚拟机上没有安装ssh协议的话,那么winscp可能就登陆不上虚拟机了。在debian虚拟机中可以通过下面几个步骤来安装ssh协议:
   1)在 /etc/apt/sources.list文件中配置apt的源:

       deb http://debian.cn99.com/debian etch main
       deb-src http://debian.cn99.com/debian/ etch main
       deb http://security.debian.org/ etch/updates main contrib
       deb-src http://security.debian.rog/ etch/updates main contrib
        
   2) $:> apt-get update (回车)   //这个命令就是更新debian的可安装文件列表

   3) $:> apt-get install ssh (回车)  //安装ssh协议

   然后就可以通过winscp把mysql的安装文件拷贝到虚拟机的 /usr/local 目录下。

  2. 开始在Debian的系统中安装MySql
     1) $:> cd /usr/local
        $:> tar xzvf mysql-max-5.0.22-linux-i686-glibc23.tar.gz
                这时在当前目录下解压出了一个文件夹:mysql-max-5.0.22-linux-i686-glibc23
        $:> ln -s mysql-max-5.0.22-linux-i686-glibc23 mysql
        $:> groupadd mysql
        $:> useradd -g mysql mysql
        $:>cd mysql
        $:>./scripts/mysql_install_db --user=mysql
        $:>chown -R root .
        $:>chown -R mysql data
        $:>chgrp -R mysql .
        $:>bin/mysqld_safe --user=mysql &
        $:>jobs  //察看是否有mysql的服务器在后台运行   
  3.   当前是在 /usr/local/mysql的目录下
        $:>cd bin   ;切换到/usr/local/mysql/bin目录下
        $:> mysql -u root -p [回车]
        Enter Password: [回车]
        mysql>show databases ; [回车]  //察看当前的数据库
        mysql>exit

因此,现在我们把MySql安装在了Debian中了,安装完后,每次启动mysql服务器的时候,都必须在/usr/local/mysql/bin目录下去启动。

********************************************(二)******************************************************************

1.在安装好了mysql后,不想每次都到: /usr/local/mysql/bin 下去执行 ./mysql -u user -p 命令登陆数据库,如何实现在任何目录执行: $: > mysql -u user -p 就可以进行登陆??

   1):  把/usr/local/mysql/bin的路径加到环境变量PATH里面
        在/etc/profile文件中修改环境变量,在这里修改的内容是对所有用户起作用的,但是在profile

       文件添加或修改的内容需要注销系统才能生效,我的系统的PATH值为:
        /usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin:/usr/local/mysql/bin/
   2)   在/sbin下加一个快捷方式,使其指向/usr/local/mysql/bin/mysql
  
        $: cd /sbin
        $: ln -s /usr/local/mysql/bin/mysql mysql

2. 如何让MySQL数据库在开机的时候自动启动?
   1)先察看当前的运行级别
        $: runlever [回车]
           N 2           ; 
   2)在 /etc/rc2.d/中察看开机可能要执行的脚本,注意如果,runlever得到的值是3或者4,那么应该在
        /etc/rc3.d/ 或者/etc/rc4.d/中察看开机要运行的脚本
        $: cd /etc/rc2.d/
        $: ls -l  [回车]     ;察看当前目下下的文件
           在这一步我们可以看到一个链接文件S99rc.local 指向 ../init.d/rc.local,这句话的意思就           是当开机的时候,系统会执行/etc/rc2.d下的s99rc.local,s99rc.local是            /etc/init.d/rc.local的一个软链接,因此实际上执行/etc/init.d/rc.local文件中的脚本。
           因此我们可以在/etc/init.d/rc.local中加入下面一句脚本以启动MySql.
          
           #MySql auto start
           /usr/local/mysql/bin/mysqld_safe &

    3)   $: reboot [回车]  //重起后,使用 ps -ef 就可以看到mysql的服务已经启动了。        

 至此,我们已经学习了自己在debian中搭建mysql的环境。

****************************************************(三)**************************************************************************************************

 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就可以登陆。


  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值