zoukankan      html  css  js  c++  java
  • debian安装及使用mysql

    在Debian中安装MySQL服务器是很方便的,使用apt-get命令即可完成。

    debian:~# apt-get install mysql-server mysql-client
    

      

    mysql-server是服务器程序,mysql-client是客户端程序。我们可通过客户端程序来管理服务器,也可通过一些开源 的GUI程序来维护服务器,如phpmyadmin,mysqlcc等。推荐使用phpmyadmin这个B/S的管理程序,通过浏览器就可方便高效地管 理网络上的数据库。

    有关MySQL数据库的管理的操作请参考本站的MySQL学习笔记。

    三、登录MySQL

      登录MySQL的命令是mysql, mysql 的使用语法如下: 
      mysql [-u username] [-h host] [-p[password]] [dbname] 
       username 与 password 分别是 MySQL 的用户名与密码,mysql的初始管理帐号是root,没有密码,注意:这个root用户不是Linux的系统用户。MySQL默认用户是root,由于 初始没有密码,第一次进时只需键入mysql即可。 
      [root@test1 local]# mysql
      Welcome to the MySQL monitor. Commands end with ; or g.
      Your MySQL connection id is 1 to server version: 4.0.16-standard
      Type 'help;' or 'h' for help. Type 'c' to clear the buffer.
      mysql>
      出现了“mysql>”提示符,恭喜你,安装成功!
      增加了密码后的登录格式如下:
      

    mysql -u root -p 
    

      


      Enter password: (输入密码)
      其中-u后跟的是用户名,-p要求输入密码,回车后在输入密码处输入密码。

      注意:这个mysql文件在/usr/bin目录下,与后面讲的启动文件/etc/init.d/mysql不是一个文件。

      四、MySQL的几个重要目录

      MySQL安装完成后不象SQL Server默认安装在一个目录,它的数据库文件、配置文件和命令文件分别在不同的目录,了解这些目录非常重要,尤其对于Linux的初学者,因为 Linux本身的目录结构就比较复杂,如果搞不清楚MySQL的安装目录那就无从谈起深入学习。

      下面就介绍一下这几个目录。

      1、数据库目录
      /var/lib/mysql/

      2、配置文件
      /usr/share/mysql(mysql.server命令及配置文件)

      3、相关命令
      /usr/bin(mysqladmin mysqldump等命令)

      4、启动脚本
      /etc/rc.d/init.d/(启动脚本文件mysql的目录)

    五、修改登录密码

      MySQL默认没有密码,安装完毕增加密码的重要性是不言而喻的。

      1、命令
      usr/bin/mysqladmin -u root password 'new-password'
      格式:mysqladmin -u用户名 -p旧密码 password 新密码

      2、例子
      例1:给root加个密码123456。
      键入以下命令 :
      [root@test1 local]# /usr/bin/mysqladmin -u root password 123456
      注:因为开始时root没有密码,所以-p旧密码一项就可以省略了。

      3、测试是否修改成功
       1)不用密码登录
      [root@test1 local]# mysql
      ERROR 1045: Access denied for user: 'root@localhost' (Using password: NO)
      显示错误,说明密码已经修改。
      2)用修改后的密码登录
      [root@test1 local]# mysql -u root -p 
      Enter password: (输入修改后的密码123456)
      Welcome to the MySQL monitor. Commands end with ; or g.
      Your MySQL connection id is 4 to server version: 4.0.16-standard
      Type 'help;' or 'h' for help. Type 'c' to clear the buffer.
      mysql>
      成功!
      这是通过mysqladmin命令修改口令,也可通过修改库来更改口令。

      六、启动与停止

      1、启动
      MySQL安装完成后启动文件mysql在/etc/init.d目录下,在需要启动时运行下面命令即可。
      [root@test1 init.d]# /etc/init.d/mysql start

      2、停止
      /usr/bin/mysqladmin -u root -p shutdown

      3、自动启动
      1)察看mysql是否在自动启动列表中
      [root@test1 local]# /sbin/chkconfig –list

    PS:系统默认是没有chkconfig这个命令的,需要自己安装,debian下安装很简单,有apt源.
      2)把MySQL添加到你系统的启动服务组里面去
      [root@test1 local]# /sbin/chkconfig – add mysql
      3)把MySQL从启动服务组里面删除。
      [root@test1 local]# /sbin/chkconfig – del mysql

     七、更改MySQL目录

      MySQL默认的数据文件存储目录为/var/lib/mysql。假如要把目录移到/home/data下需要进行下面几步:

      1、home目录下建立data目录
      cd /home
      mkdir data

      2、把MySQL服务进程停掉: 
      mysqladmin -u root -p shutdown

      3、把/var/lib/mysql整个目录移到/home/data
      mv /var/lib/mysql /home/data/
      这样就把MySQL的数据文件移动到了/home/data/mysql下

      4、找到my.cnf配置文件
      如果/etc/目录下没有my.cnf配置文件,请到/usr/share/mysql/下找到*.cnf文件,拷贝其中一个到/etc/并改名为my.cnf)中。命令如下:
       [root@test1 mysql]# cp /usr/share/mysql/my-medium.cnf /etc/my.cnf

      5、编辑MySQL的配置文件/etc/my.cnf
      为保证MySQL能够正常工作,需要指明mysql.sock文件的产生位置。 修改socket=/var/lib/mysql/mysql.sock一行中等号右边的值为:/home/mysql/mysql.sock 。操作如下:
       vi  my.cnf    (用vi工具编辑my.cnf文件,找到下列数据修改之)
       # The MySQL server
        [mysqld]
        port   = 3306
       #socket  = /var/lib/mysql/mysql.sock(原内容,为了更稳妥用“#”注释此行)
        socket  = /home/data/mysql/mysql.sock   (加上此行)

      6、修改MySQL启动脚本/etc/rc.d/init.d/mysql
      最后,需要修改MySQL启动脚本/etc/rc.d/init.d/mysql,把其中datadir=/var/lib/mysql一行中,等号右边的路径改成你现在的实际存放路径:home/data/mysql。
      [root@test1 etc]# vi /etc/rc.d/init.d/mysql
      #datadir=/var/lib/mysql    (注释此行)
      datadir=/home/data/mysql   (加上此行)

      7、重新启动MySQL服务
      /etc/rc.d/init.d/mysql start
      或用reboot命令重启Linux
      如果工作正常移动就成功了,否则对照前面的7步再检查一下。

      八、MySQL的常用操作

      注意:MySQL中每个命令后都要以分号;结尾。

      1、显示数据库
      mysql> show databases;
      +----------+
      | Database |
      +----------+
      | mysql  |
      | test   |
      +----------+
      2 rows in set (0.04 sec)
      Mysql刚安装完有两个数据库:mysql和test。mysql库非常重要,它里面有MySQL的系统信息,我们改密码和新增用户,实际上就是用这个库中的相关表进行操作。

      2、显示数据库中的表
      mysql> use mysql; (打开库,对每个库进行操作就要打开此库,类似于foxpro )
      Database changed

      mysql> show tables;
      +-----------------+
      | Tables_in_mysql |
      +-----------------+
      | columns_priv  |
      | db       |
      | func      |
      | host      |
      | tables_priv   |
      | user      |
      +-----------------+
      6 rows in set (0.01 sec)

      3、显示数据表的结构: 
      describe 表名;

      4、显示表中的记录: 
      select * from 表名;
      例如:显示mysql库中user表中的纪录。所有能对MySQL用户操作的用户都在此表中。
      Select * from user;

      5、建库: 
      create database 库名; 
      例如:创建一个名字位aaa的库
      mysql> create databases aaa;

    6、建表: 
      use 库名; 
      create table 表名 (字段设定列表);
      例如:在刚创建的aaa库中建立表name,表中有id(序号,自动增长),xm(姓名),xb(性别),csny(出身年月)四个字段
      use aaa;
      mysql> create table name (id int(3) auto_increment not null primary key, xm char(8),xb char(2),csny date);
      可以用describe命令察看刚建立的表结构。
      mysql> describe name;

      +-------+---------+------+-----+---------+----------------+
      | Field | Type  | Null | Key | Default | Extra     |
      +-------+---------+------+-----+---------+----------------+
      | id  | int(3) |   | PRI | NULL  | auto_increment |
      | xm  | char(8) | YES |   | NULL  |        |
      | xb  | char(2) | YES |   | NULL  |        |
      | csny | date  | YES |   | NULL  |        |
      +-------+---------+------+-----+---------+----------------+

      7、增加记录
      例如:增加几条相关纪录。
      mysql> insert into name values('','张三','男','1971-10-01');
      mysql> insert into name values('','白云','女','1972-05-20');
      可用select命令来验证结果。
      mysql> select * from name;
      +----+------+------+------------+
      | id | xm  | xb  | csny    |
      +----+------+------+------------+
      | 1 | 张三 | 男  | 1971-10-01 |
      | 2 | 白云 | 女  | 1972-05-20 |
      +----+------+------+------------+

      8、修改纪录
      例如:将张三的出生年月改为1971-01-10
      mysql> update name set csny='1971-01-10' where xm='张三';

      9、删除纪录
      例如:删除张三的纪录。
      mysql> delete from name where xm='张三';

      10、删库和删表 
      drop database 库名; 
      drop table 表名;

      九、增加MySQL用户

      格式:grant select on 数据库.* to 用户名@登录主机 identified by "密码" 
    例1、增加一个用户user_1密码为123,让他可以在任何主机上登录,并对所有数据库有查询、插入、修改、删除的权限。首先用以root用户连入MySQL,然后键入以下命令:

      mysql> grant select,insert,update,delete on *.* to user_1@"%" Identified by "123"; 
    例1增加的用户是十分危险的,如果知道了user_1的密码,那么他就可以在网上的任何一台电脑上登录你的MySQL数据库并对你的数据为所欲为了,解决办法见例2。

      例2、增加一个用户user_2密码为123,让此用户只可以在localhost上登录,并可以对数据库aaa进行查询、插入、修改、删除的 操作(localhost指本地主机,即MySQL数据库所在的那台主机),这样用户即使用知道user_2的密码,他也无法从网上直接访问数据库,只能 通过MYSQL主机来操作aaa库。

      mysql>grant select,insert,update,delete on aaa.* to user_2@localhost identified by "123";

      用新增的用户如果登录不了MySQL,在登录时用如下命令:

      mysql -u user_1 -p -h 192.168.113.50 (-h后跟的是要登录主机的ip地址)

    我们知道,在ms sql server中或access中,
    若要查询前10条记录,使用top 10即可,
    但在mysql中 不支持这个写法,它用limit 10。 

    我们可以利用MySQL中 SELECT支持的一个子句——LIMIT——来完成这项功能。 
    LIMIT可以实现top N查询,也可以实现M至N(某一段)的记录查询,具体语法如下: 
    SELECT * FROM MYTABLE
    ORDER BY AFIELD 
    LIMIT offset, recnum
    其中offset为从第几条(M+1)记录开始,recnum为返回的记录条数。例: 
    select * from mytable
    order by afield 
    limit 2, 5 
    即意为从第3条记录开始的5条记录。

      十、备份与恢复

      1、备份

      例如:将上例创建的aaa库备份到文件back_aaa中

      [root@test1 root]# cd /home/data/mysql (进入到库目录,本例库已由val/lib/mysql转到/home/data/mysql,见上述第七部分内容)
      [root@test1 mysql]# mysqldump -u root -p --opt aaa > back_aaa

      2、恢复

      [root@test mysql]# mysql -u root -p ccc < back_aaa

    十一. 常见问题:

    1."Can't connect to local MySQL server through socket '/var/lib/mysql/mysql.sock' "错误

    解决方法:

    这是没启动mysql的守护进程,执行service mysqld start就行了

    2.

    如果你想连接你的mysql的时候发生这个错误:
    ERROR 1130: Host '210.13.92.66' is not allowed to connect to this MySQL server
    请按照如下方法解决:

    login as: root ///登陆系统
    root@tqwm.cn's password: ///输入密码
    Last login: Tue Apr 15 14:06:54 2008 from 210.13.92.66
    [root@myserver ~]# /usr/local/mysql/bin/mysql -uroot -hlocalhost -p ///登入mysql
    Enter password: ///输入mysql对应用户的密码
    Welcome to the MySQL monitor. Commands end with ; or g.
    Your MySQL connection id is 431
    Server version: 5.0.58-enterprise-gpl-log Source

    Type 'help;' or 'h' for help. Type 'c' to clear the buffer. ///登入成功的提示信息

    mysql> GRANT ALL PRIVILEGES ON *.* TO 'root'@'%' IDENTIFIED BY 'rootpasswd' WITH GRANT OPTION; ///输入这段指令并回车后允许所有用root用户并且输入rootpasswd密码的主机登入该mysql Server 如果将'%'换成'10.1.1.1'那么只有10.1.1.1的主机可以登陆.
    Query OK, 0 rows affected (0.07 sec)

    mysql> q ///退出mysql
    Bye
    [root@myserver ~]#

    另外还有一种方法转自其他地方

    改表法。可能是你的帐号不允许从远程登陆,只能在localhost。这个时候只要在localhost的那台电脑,登入mysql后,更改 "mysql" 数据库里的 "user" 表里的 "host" 项,从"localhost"改称"%"

    mysql -u root -pvmwaremysql>use mysql;mysql>update user set host = '%' where user = 'root';mysql>select host, user from user;

    自己的解决方法:

    直接在cmd 下进入mysqlin 下 运行 GRANT ALL PRIVILEGES ON *.* TO 'root'@'%' IDENTIFIED BY 'password' WITH GRANT OPTION

  • 相关阅读:
    2017ccpc全国邀请赛(湖南湘潭) E. Partial Sum
    Codeforces Round #412 C. Success Rate (rated, Div. 2, base on VK Cup 2017 Round 3)
    2017 中国大学生程序设计竞赛 女生专场 Building Shops (hdu6024)
    51nod 1084 矩阵取数问题 V2
    Power收集
    红色的幻想乡
    Koishi Loves Segments
    Wood Processing
    整数对
    Room and Moor
  • 原文地址:https://www.cnblogs.com/xusir/p/3334217.html
Copyright © 2011-2022 走看看