zoukankan      html  css  js  c++  java
  • mysql的基础操作及其常见问题解决

    Mysql系统的帐号维护及其还原

    *一、案例描述

    在编程开发中,涉及与数据库权限维护模块至关重要,然后一旦出现问题则又不好排查和解决,本文拟成Mysql数据权限的相关知识,从基础到深入,从全面到细节做一个梳理。在文章末尾则对工作中遇到的权限管理问题做一个梳理。

    *二、案例分析和解决

    下面是本人在Mysql开发和维护中经常使用到命令及其解释:

    第一招、mysql服务的启动和停止

    net stop mysql

    net start mysql

    第二招、登陆mysql

    语法如下: mysql -u用户名 -p用户密码

    键入命令mysql -uroot -p, 回车后提示你输入密码,输入12345,然后回车即可进入到mysql中了,mysql的提示符是:

    mysql>

    注意,如果是连接到另外的机器上,则需要加入一个参数-h机器IP

    第三招、增加新用户

    格式:grant 权限 on 数据库.* to 用户名@登录主机 identified by "密码"

    如,增加一个用户user1密码为password1,让其可以在本机上登录, 并对所有数据库有查询、插入、修改、删除的权限。首先用以root用户连入mysql,然后键入以下命令:

    grant select,insert,update,delete on *.* to user1@localhost Identified by "password1";

    如果希望该用户能够在任何机器上登陆mysql,则将localhost改为"%"。

    如果你不想user1有密码,可以再打一个命令将密码去掉。

    grant select,insert,update,delete on mydb.* to user1@localhost identified by "";

    第四招: 操作数据库

    登录到mysql中,然后在mysql的提示符下运行下列命令,每个命令以分号结束。

    1、 显示数据库列表。

    show databases;

    缺省有两个数据库:mysql和test。 mysql库存放着mysql的系统和用户权限信息,我们改密码和新增用户,实际上就是对这个库进行操作。

    2、 显示库中的数据表:

    use mysql;

    show tables;

    3、 显示数据表的结构:

    describe 表名;

    4、 建库与删库:

    create database 库名;

    drop database 库名;

    5、 建表:

    use 库名;

    create table 表名(字段列表);

    drop table 表名;

    6、 清空表中记录:

    delete from 表名;

    7、 显示表中的记录:

    select * from 表名;

    第五招、导出和导入数据

    1. 导出数据:

    mysqldump --opt test > mysql.test

    即将数据库test数据库导出到mysql.test文件,后者是一个文本文件

    如:mysqldump -u root -p123456 --databases dbname > mysql.dbname

    就是把数据库dbname导出到文件mysql.dbname中。

    2. 导入数据:

    mysqlimport -u root -p123456 < mysql.dbname。

    不用解释了吧。

    3. 将文本数据导入数据库:

    文本数据的字段数据之间用tab键隔开。

    use test;

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

    1:使用SHOW语句找出在服务器上当前存在什么数据库:

    mysql> SHOW DATABASES;

    2、创建一个数据库MYSQLDATA

    mysql> CREATE DATABASE MYSQLDATA;

    3、选择你所创建的数据库

    mysql> USE MYSQLDATA; (按回车键出现Database changed 时说明操作成功!)

    4:查看现在的数据库中存在什么表

    mysql> SHOW TABLES;

    5:创建一个数据库表

    mysql> CREATE TABLE MYTABLE (name VARCHAR(20), sex CHAR(1));

    6:显示表的结构:

    mysql> DESCRIBE MYTABLE;

    7:往表中加入记录

    mysql> insert into MYTABLE values ("hyq","M");

    8:用文本方式将数据装入数据库表中(例如D:/mysql.txt)

    mysql> LOAD DATA LOCAL INFILE "D:/mysql.txt" INTO TABLE MYTABLE;

    9:导入.sql文件命令(例如D:/mysql.sql)

    mysql>use database;

    mysql>source d:/mysql.sql;

    10:删除表

    mysql>drop TABLE MYTABLE;

    11:清空表

    mysql>delete from MYTABLE;

    12:更新表中数据

    mysql>update MYTABLE set sex="f" where name='hyq';

    posted on 2006-01-10 16:21 happytian 阅读(6) 评论(0) 编辑 收藏 收藏至365Key

    13:备份数据库

    mysqldump -u root 库名>xxx.data

    14:例2:连接到远程主机上的MYSQL

    假设远程主机的IP为:110.110.110.110,用户名为root,密码为abcd123。则键入以下命令:

    mysql -h110.110.110.110 -uroot -pabcd123

    (注:u与root可以不用加空格,其它也一样)

    3、退出MYSQL命令: exit (回车)

    MySQL的权限系统围绕着两个概念:
    1:认证->确定用户是否允许连接数据库服务器
    2:授权->确定用户是否拥有足够的权限执行查询请求等。
    显然从上面可知,如果认证不成功的话,哪么授权肯定是无法进行的。在这里我们要关注两个表,分别是在MySQL数据库中user表和db表。
    user表在某种程度上是独一无二的,因为它是唯一一个在权限请求的认证和授权阶段都起作用的表,也是唯一一个存数MySQL服务器相关权限的权限表。在认证阶段,它只是负责为用户授权访问MySQL服务器,确定用户每小时的最大连接数和最大并发数;在授权阶段,user确定允许访问服务器的用户是否被赋予了操作数据库的全局权限,确定用户每小时的最大查询数和更新数。
    db表用于为每个用户针对每个数据库赋予权限。具体的可以查看db的字段。
    用户和权限管理命令:
    create user :用于创建新的用户账户(从5.0版本开始有这个命令),在创建这个用户的时候不分配任何权限,需要在创建之后通过grant命令来给改用户分配相应的权限。
    eg:create user guest@localhost identified by '123456';
    grant select on mydb.* to guest@localhost;
    drop user:删除一个用户账户(注意在4.1.1版本之前只能删除没有任何权限的账户,5.0.2之后可以删除任何账户)
    eg:drop user guest;
    rename user:可以实现重命名一个用户账号。
    grant:用于管理访问权限,也就是给用户账号授权。当然它同样可以创建一个新的用户账户。
    eg:grant select, insert, update, delete on new_db.* to guest@'%' identified by '88888888';
    grant 权限 on 数据库.表 to 用户 @ 访问方式 identified by 密码
    grant select on mydb.* to guest@localhost identified by '123456';
    BTW:如果需要一个空密码或者无密码的账户,必须先用Create User命令,然后通过
    grant来分配权限。如果如下操作:
    grant all privileges on mydb.* to visitor@'%' ;而在数据库user表中没有先创建visitor
    用户,则会发生1133错误"Can't find any matching row in the user table"。grant只能创
    有密码的账户。
    revoke:删除一个账户,具体查看MySQL的文档。

    *三、经验总结、预防措施和对规范的建议等

    下面为本人在使用mysql中遇到的一些问题的汇总,只介绍了大体的思路,具体的细节还需进佐证。

    1. mysql数据库对远程访问授权

    1、改表法
    可能是你的帐号不允许从远程登陆,只能在localhost。这个时候只要在localhost的那台电脑,登入mysql后,更改 "mysql" 数据库里的 "user" 表里的 "host" 项,从"localhost"改称"%"
    mysql -u root -p
    mysql>use mysql;
    mysql>update user set host = '%' where user = 'root';
    mysql>select host, user from user;

    2、授权法
    在安装mysql的机器上运行:
    1、d:\mysql\bin\>mysql -h localhost -u root
    //这样应该可以进入MySQL服务器
    2、mysql>GRANT ALL PRIVILEGES ON *.* TO 'root'@'%'WITH GRANT OPTION
    //赋予任何主机访问数据的权限
    例如,你想myuser使用mypassword从任何主机连接到mysql服务器的话。
    GRANT ALL PRIVILEGES ON *.* TO 'myuser'@'%'IDENTIFIED BY 'mypassword' WI
    TH GRANT OPTION;
    如果你想允许用户myuser从ip为192.168.1.6的主机连接到mysql服务器,并使用mypassword作为密码
    GRANT ALL PRIVILEGES ON *.* TO 'myuser'@'192.168.1.3'IDENTIFIED BY
    'mypassword' WITH GRANT OPTION;
    3、mysql>FLUSH PRIVILEGES
    //修改生效
    4、mysql>EXIT
    退出MySQL服务器,这样就可以在其它任何的主机上以root身份登录

    2. mysql修改root用户密码

    2.1、关掉系统里的MySQL进程,使用如下命令: killall -TERM mysqld 

    2.2、用以下命令启动MySQL,以不检查权限的方式启动。 mysqld_safe -skip-grant-table &、

    2.3、用空密码方式使用root用户登录MySQL。 mysql -u root

    2.4、修改root用户的密码。 mysql> update mysql.user set password=PASSWORD('newpassword') where User='root'; mysql> flush privileges; mysql> quit

    2.5、restart。

  • 相关阅读:
    反射
    注解
    file
    exception(异常)
    MySQL问题
    maven 中 遇到的问题
    Java读取文本数字
    人民币-欧元预测(ARIMA算法)代码
    云平台项目--学习经验--jsrender前端渲染模板
    云平台项目--学习经验--BootstrapValidate表单验证插件
  • 原文地址:https://www.cnblogs.com/xianqingzh/p/2267402.html
Copyright © 2011-2022 走看看