1、问题一:使用update mysql.user set password='root'改动密码后,不能登录

解决:操作过程例如以下。

(1)关闭mysql(杀掉mysqld进程),然后使用命令:

mysqld --skip-grant-tables

(2)启动数据库,就能够正常连接了

(3)接着清除rootpassword:

update mysql.user set password=null

(4)使用命令mysqld启动数据库

做完这些后就能够正常登录了。

2、问题二:MySQL Error 1130 Host 'localhost' is not allowed to connect to this MySQL server

解决:使用授权语句授权

GRANT ALL PRIVILEGES ON *.* TO 'root'@'%' IDENTIFIED BY '123456' WITH GRANT OPTION;

给root授权本地訪问。

參考:

1、连接Mysql

格式: mysql -h主机地址 -uusername -p用户password



1、连接到本机上的MYSQL。

首先打开DOS窗体。然后进入文件夹mysql\bin。再键入命令mysql -u root -p,回车后提示你输password.注意username前能够有空格也能够没有空格,可是password前必须没有空格,否则让你又一次输入password。



假设刚安装好MYSQL,超级用户root是没有password的。故直接回车就可以进入到MYSQL中了,MYSQL的提示符是: mysql>



2、连接到远程主机上的MYSQL。

如果远程主机的IP为:110.110.110.110。username为root,password为abcd123。则键入下面命令:

    mysql -h110.110.110.110 -u root -p 123;(注:u与root之间能够不用加空格,其他也一样)



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

 

2、改动password

格式:mysqladmin -uusername -p旧password password 新password



1、给root加个passwordab12。



首先在DOS下进入文件夹mysql\bin。然后键入下面命令

    mysqladmin -u root -password ab12

注:由于開始时root没有password,所以-p旧password一项就能够省略了。

2、再将root的password改为djg345。

    mysqladmin -u root -p ab12 password djg345

3、添加新用户

注意:和上面不同。以下的由于是MYSQL环境中的命令,所以后面都带一个分号作为命令结束符



格式:grant select on 数据库.* to username@登录主机 identified by “password”



1、添加一个用户test1password为abc,让他能够在不论什么主机上登录,并对全部数据库有查询、插入、改动、删除的权限。

首先用root用户连入MYSQL,然后键入下面命令:

    grant select,insert,update,delete on *.* to [email=test1@”%]test1@”%[/email]” Identified by “abc”;



但添加的用户是十分危急的。你想如某个人知道test1的password,那么他就能够在internet上的不论什么一台电脑上登录你的mysql数据库并对你的数据能够为所欲为了。解决的方法见2。



2、添加一个用户test2password为abc,让他仅仅能够在localhost上登录,并能够对数据库mydb进行查询、插入、改动、删除的操作(localhost指本地主机,即MYSQL数据库所在的那台主机),这样用户即使用知道test2的password。他也无法从internet上直接訪问数据库。仅仅能通过MYSQL主机上的web页来訪问了。

grant select,insert,update,delete on mydb.* to [email=test2@localhost]test2@localhost[/email] identified by “abc”;



假设你不想test2有password。能够再打一个命令将password消掉。

grant select,insert,update,delete on mydb.* to [email=test2@localhost]test2@localhost[/email] identified by “”;

 

4.1 创建数据库

注意:创建数据库之前要先连接Mysqlserver



命令:create database <数据库名>



例1:建立一个名为xhkdb的数据库

   mysql> create database xhkdb;



例2:创建数据库并分配用户



①CREATE DATABASE 数据库名;



②GRANT SELECT,INSERT,UPDATE,DELETE,CREATE,DROP,ALTER ON 数据库名.* TO 数据库名@localhost IDENTIFIED BY 'password';



③SET PASSWORD FOR '数据库名'@'localhost' = OLD_PASSWORD('password');



依次运行3个命令完毕数据库创建。注意:中文 “password”和“数据库”是户自己须要设置的。

4.2 显示数据库

命令:show databases (注意:最后有个s)

mysql> show databases;



注意:为了不再显示的时候乱码,要改动数据库默认编码。

下面以GBK编码页面为例进行说明:



1、改动MYSQL的配置文件:my.ini里面改动default-character-set=gbk

2、代码执行时改动:

   ①Java代码:jdbc:mysql://localhost:3306/test?useUnicode=true&characterEncoding=gbk

   ②PHP代码:header("Content-Type:text/html;charset=gb2312");

   ③C语言代码:int mysql_set_character_set( MYSQL * mysql, char * csname);

该函数用于为当前连接设置默认的字符集。

字符串csname指定了1个有效的字符集名称。连接校对成为字符集的默认校对。该函数的工作方式与SET NAMES语句类似。但它还能设置mysql- > charset的值。从而影响了由mysql_real_escape_string() 设置的字符集。

4.3 删除数据库

命令:drop database <数据库名>

比如:删除名为 xhkdb的数据库

mysql> drop database xhkdb;



样例1:删除一个已经确定存在的数据库

   mysql> drop database drop_database;

   Query OK, 0 rows affected (0.00 sec)



样例2:删除一个不确定存在的数据库

   mysql> drop database drop_database;

   ERROR 1008 (HY000): Can't drop database 'drop_database'; database doesn't exist

      //错误发生,不能删除'drop_database'数据库,该数据库不存在。

mysql> drop database if exists drop_database;

   Query OK, 0 rows affected, 1 warning (0.00 sec)//产生一个警告说明此数据库不存在

   mysql> create database drop_database;

   Query OK, 1 row affected (0.00 sec)

   mysql> drop database if exists drop_database;//if exists 推断数据库是否存在,不存在也不产生错误

   Query OK, 0 rows affected (0.00 sec)

4.4 连接数据库

命令: use <数据库名>



比如:假设xhkdb数据库存在,尝试存取它:

   mysql> use xhkdb;

屏幕提示:Database changed



use 语句能够通告MySQL把db_name数据库作为默认(当前)数据库使用,用于兴许语句。该数据库保持为默认数据库,直到语段的结尾。或者直到公布一个不同的USE语句:

   mysql> USE db1;

   mysql> SELECT COUNT(*) FROM mytable;   # selects from db1.mytable

   mysql> USE db2;

   mysql> SELECT COUNT(*) FROM mytable;   # selects from db2.mytable



使用USE语句为一个特定的当前的数据库做标记,不会阻碍您訪问其他数据库中的表。

以下的样例能够从db1数据库訪问作者表,并从db2数据库訪问编辑表:

   mysql> USE db1;

   mysql> SELECT author_name,editor_name FROM author,db2.editor

       ->        WHERE author.editor_id = db2.editor.editor_id;



USE语句被设立出来,用于与Sybase相兼容。

有些网友问到,连接以后怎么退出。

事实上。不用退出来,use 数据库后。使用show databases就能查询全部数据库,假设想跳到其它数据库,用

   use 其它数据库名字

就能够了。

4.5 当前选择的数据库

命令:mysql> select database();



MySQL中SELECT命令类似于其它编程语言里的print或者write,你能够用它来显示一个字符串、数字、数学表达式的结果等等。怎样使用MySQL中SELECT命令的特殊功能?



1.显示MYSQL的版本号

mysql> select version(); 

+-----------------------+ 

| version()             | 

+-----------------------+ 

| 6.0.4-alpha-community | 

+-----------------------+ 

1 row in set (0.02 sec) 



2. 显示当前时间

mysql> select now(); 

+---------------------+ 

| now()               | 

+---------------------+ 

| 2009-09-15 22:35:32 | 

+---------------------+ 

1 row in set (0.04 sec) 



3. 显示年月日

SELECT DAYOFMONTH(CURRENT_DATE); 

+--------------------------+ 

| DAYOFMONTH(CURRENT_DATE) | 

+--------------------------+ 

|                       15 | 

+--------------------------+ 

1 row in set (0.01 sec) 

  

SELECT MONTH(CURRENT_DATE); 

+---------------------+ 

| MONTH(CURRENT_DATE) | 

+---------------------+ 

|                   9 | 

+---------------------+ 

1 row in set (0.00 sec) 

  

SELECT YEAR(CURRENT_DATE); 

+--------------------+ 

| YEAR(CURRENT_DATE) | 

+--------------------+ 

|               2009 | 

+--------------------+ 

1 row in set (0.00 sec) 



4. 显示字符串

mysql> SELECT "welecome to my blog!"; 

+----------------------+ 

| welecome to my blog! | 

+----------------------+ 

| welecome to my blog! | 

+----------------------+ 

1 row in set (0.00 sec) 



5. 当计算器用

select ((4 * 4) / 10 ) + 25; 

+----------------------+ 

| ((4 * 4) / 10 ) + 25 | 

+----------------------+ 

|                26.60 | 

+----------------------+ 

1 row in set (0.00 sec) 



6. 串接字符串

select CONCAT(f_name, " ", l_name) 

AS Name 

from employee_data 

where title = 'Marketing Executive'; 

+---------------+ 

| Name          | 

+---------------+ 

| Monica Sehgal | 

| Hal Simlai    | 

| Joseph Irvine | 

+---------------+ 

3 rows in set (0.00 sec) 

注意:这里用到CONCAT()函数,用来把字符串串接起来。

另外,我们还用到曾经学到的AS给结果列'CONCAT(f_name, " ", l_name)'起了个假名。

5.1 创建数据表

命令:create table <表名> ( <字段名1> <类型1> [,..<字段名n> <类型n>]);



比如。建立一个名为MyClass的表,

字段名 数字类型 数据宽度 是否为空 是否主键 自己主动添加 默认值
id int 4 primary key auto_increment  
name char 20      
sex int 4     0
degree double 16      

mysql> create table MyClass(

> id int(4) not null primary key auto_increment,

> name char(20) not null,

> sex int(4) not null default '0',

> degree double(16,2));

5.3 删除数据表

命令:drop table <表名>



比如:删除表名为 MyClass 的表

   mysql> drop table MyClass;



DROP TABLE用于取消一个或多个表。

您必须有每一个表的DROP权限。

全部的表数据和表定义会被取消,所以使用本语句要小心。



注意:对于一个带分区的表,DROP TABLE会永久性地取消表定义,取消各分区。并取消储存在这些分区中的全部数据。DROP TABLE还会取消与被取消的表有关联的分区定义(.par)文件。



对与不存在的表,使用IF EXISTS用于防止发生错误。当使用IF EXISTS时。对于每一个不存在的表,会生成一个NOTE。

RESTRICT和CASCADE能够使分区更easy。眼下,RESTRICT和CASCADE不起作用。

5.4 表插入数据

命令:insert into <表名> [( <字段名1>[,..<字段名n > ])] values ( 值1 )[, ( 值n )]



比如:往表 MyClass中插入二条记录, 这二条记录表示:编号为1的名为Tom的成绩为96.45, 编号为2 的名为Joan 的成绩为82.99, 编号为3 的名为Wang 的成绩为96.5。

mysql> insert into MyClass values(1,'Tom',96.45),(2,'Joan',82.99), (2,'Wang', 96.59);



注意:insert into每次仅仅能向表中插入一条记录。

5.5 查询表中的数据

1)、查询全部行

命令: select <字段1,字段2,...> from < 表名 > where < 表达式 >

比如:查看表 MyClass 中全部数据

   mysql> select * from MyClass;



2)、查询前几行数据

比如:查看表 MyClass 中前2行数据

mysql> select * from MyClass order by id limit 0,2;



select一般配合where使用,以查询更精确更复杂的数据。

5.6 删除表中数据

 
 
 

命令:delete from 表名 where 表达式



比如:删除表 MyClass中编号为1 的记录

mysql> delete from MyClass where id=1;



以下是一个删除数据前后表的对照。

FirstName LastName Age
Peter Griffin 35
Glenn Quagmire 33

以下以PHP代码为例删除 "Persons" 表中全部 LastName='Griffin' 的记录:

<?

php
$con = mysql_connect("localhost","peter","abc123");
if (!$con)
{
die('Could not connect: ' . mysql_error());
}
mysql_select_db("my_db", $con);
mysql_query("DELETE FROM Persons WHERE LastName='Griffin'"); mysql_close($con);
?>

在这次删除之后,表是这种:

FirstName LastName Age
Glenn Quagmire 33

5.7 改动表中数据

语法:update 表名 set 字段=新值,… where 条件

   mysql> update MyClass set name='Mary' where id=1;



样例1:单表的MySQL UPDATE语句:

   UPDATE [LOW_PRIORITY] [IGNORE] tbl_name SET col_name1=expr1 [, col_name2=expr2 ...] [WHERE where_definition] [ORDER BY ...] [LIMIT row_count]



样例2:多表的UPDATE语句:

UPDATE [LOW_PRIORITY] [IGNORE] table_references SET col_name1=expr1 [, col_name2=expr2 ...] [WHERE where_definition]



UPDATE语法能够用新值更新原有表行中的各列。

SET子句指示要改动哪些列和要给予哪些值。WHERE子句指定应更新哪些行。假设没有WHERE子句,则更新全部的行。

假设指定了ORDER BY子句,则依照被指定的顺序对行进行更新。LIMIT子句用于给定一个限值。限制能够被更新的行的数目。

 

5.8 添加字段

命令:alter table 表名 add字段 类型 其它;

比如:在表MyClass中加入了一个字段passtest,类型为int(4)。默认值为0

   mysql> alter table MyClass add passtest int(4) default '0'



加索引

   mysql> alter table 表名 add index 索引名 (字段名1[,字段名2 …]);

样例: mysql> alter table employee add index emp_name (name);



加主keyword的索引

  mysql> alter table 表名 add primary key (字段名);

样例: mysql> alter table employee add primary key(id);



加唯一限制条件的索引

   mysql> alter table 表名 add unique 索引名 (字段名);

样例: mysql> alter table employee add unique emp_name2(cardnumber);



删除某个索引

   mysql> alter table 表名 drop index 索引名;

样例: mysql>alter table employee drop index emp_name;



添加字段:

mysql> ALTER TABLE table_name ADD field_name field_type;



改动原字段名称及类型:

mysql> ALTER TABLE table_name CHANGE old_field_name new_field_name field_type;



删除字段:

MySQL ALTER TABLE table_name DROP field_name;

5.9 改动表名

命令:rename table 原表名 to 新表名;



比如:在表MyClass名字更改为YouClass

   mysql> rename table MyClass to YouClass;



当你运行 RENAME 时,你不能有不论什么锁定的表或活动的事务。

你相同也必须有对原初表的 ALTER 和 DROP 权限,以及对新表的 CREATE 和 INSERT 权限。

假设在多表更名中。MySQL 遭遇到不论什么错误。它将对全部被更名的表进行倒退更名,将每件事物退回到最初状态。

RENAME TABLE 在 MySQL 3.23.23 中被增加。

6、备份数据库

命令在DOS的[url=file://\\mysql\\bin]\\mysql\\bin[/url]文件夹下运行



1.导出整个数据库

导出文件默认是存在mysql\bin文件夹下

    mysqldump -u username -p 数据库名 > 导出的文件名称

    mysqldump -u user_name -p123456 database_name > outfile_name.sql



2.导出一个表

    mysqldump -u username -p 数据库名 表名> 导出的文件名称

    mysqldump -u user_name -p database_name table_name > outfile_name.sql



3.导出一个数据库结构

    mysqldump -u user_name -p -d –add-drop-table database_name > outfile_name.sql

    -d 没有数据 –add-drop-table 在每一个create语句之前添加一个drop table



4.带语言參数导出

    mysqldump -uroot -p –default-character-set=latin1 –set-charset=gbk –skip-opt database_name > outfile_name.sql



比如,将aaa库备份到文件back_aaa中:

  [root@test1 root]# cd /home/data/mysql

  [root@test1 mysql]# mysqldump -u root -p --opt aaa > back_aaa

7.1 一个建库和建表的实例1

drop database if exists school; //假设存在SCHOOL则删除

create database school; //建立库SCHOOL

use school; //打开库SCHOOL

create table teacher //建立表TEACHER

(

    id int(3) auto_increment not null primary key,

    name char(10) not null,

    address varchar(50) default ‘深圳’,

    year date

); //建表结束



//下面为插入字段

insert into teacher values(”,’allen’,'大连一中’,'1976-10-10′);

insert into teacher values(”,’jack’,'大连二中’,'1975-12-23′);



假设你在mysql提示符键入上面的命令也能够。但不方便调试。

1、你能够将以上命令原样写入一个文本文件里。如果为school.sql,然后拷贝到c:\\下,并在DOS状态进入文件夹[url=file://\\mysql\\bin]\\mysql\\bin[/url]。然后键入下面命令:

    mysql -uroot -ppassword < c:\\school.sql

假设成功,空出一行无不论什么显示;如有错误。会有提示。

(以上命令已经调试,你仅仅要将//的凝视去掉就可以使用)。



2、或者进入命令行后使用 mysql> source c:\\school.sql; 也能够将school.sql文件导入数据库中。


7.2 一个建库和建表的实例2

drop database if exists school; //假设存在SCHOOL则删除

create database school; //建立库SCHOOL

use school; //打开库SCHOOL

create table teacher //建立表TEACHER

(

    id int(3) auto_increment not null primary key,

    name char(10) not null,

    address varchar(50) default ''深圳'',

    year date

); //建表结束



//下面为插入字段

insert into teacher values('''',''glchengang'',''深圳一中'',''1976-10-10'');

insert into teacher values('''',''jack'',''深圳一中'',''1975-12-23'');



注:在建表中

1、将ID设为长度为3的数字字段:int(3)。并让它每一个记录自己主动加一:auto_increment。并不能为空:not null;并且让他成为主字段primary key。



2、将NAME设为长度为10的字符字段



3、将ADDRESS设为长度50的字符字段,并且缺省值为深圳。

4、将YEAR设为日期字段。

MySQL 登录问题的更多相关文章

  1. mysql 登录及常用命令

    一.mysql服务的启动和停止 mysql> net stop mysql mysql> net start mysql 二.登陆mysql mysql> 语法如下: mysql - ...

  2. mysql登录错误或者密码错误

    一.mysql登录错误 mysqladmin: connect to server at 'localhost' failed error: 'Access denied for user 'root ...

  3. 【MySQL案件】mysql登录-S失败

    1.1.1. mysql登录mysql时间,-S参数失效 [环境的叙述性说明] mysql5.5.14 [问题叙述性说明] 配置多个实例 实例1 实例2 datadir /home/mysql_330 ...

  4. MySQL登录汇总

    --MySQL登录汇总 --------------------2014/5/17 1. ERROR 1045错误ERROR 1045 (28000): Access denied for user ...

  5. mysql登录报错:ERROR 1045 (28000): Access denied for user 'root'@'localhost' (using password: YES)

    在MySQL登录时出现Access denied for user 'root'@'localhost' (using password: YES) 拒绝访问 对于出现拒绝访问root用户的解决方案错 ...

  6. 【转载】在MySQL登录时出现Access denied for user 'root'@'localhost' (using password: YES) 拒绝访问,并可修改MySQL密码

    在MySQL登录时出现Access denied for user 'root'@'localhost' (using password: YES) 拒绝访问,并可修改MySQL密码 2018年08月 ...

  7. MYSQL登录错误:mysqladmin: connect to server at ‘localhost’ failed

    一.mysql登录错误 mysqladmin: connect to server at 'localhost' failed       error: 'Access denied for user ...

  8. MySQL登录问题1045 (28000)处理步骤【原创】

    MySQL登录问题1045 (28000)  俩台服务器主从复制,从的同步账号无法远程登录主服务器.报错ERROR 1045 (28000): Access denied for user 'root ...

  9. mysql登录:access denied for user 'root'@'localhost'(using password:YES)

    mysql登录: access denied for user 'root'@'localhost'(using password:YES) 解决: use mysql; select user,ho ...

  10. mysql登录退出命令

    1. MySQL登录与退出登录Mysql:“输入mysql -u帐号 -p密码 这是登陆mysql退出:mysql > exit;以下是实例参考下: 登录Mysql:“输入mysql -uroo ...

随机推荐

  1. QT开发之旅-Udp聊天室编程

    一.概要设计 登录对话框(继承自QDialog类)进行用户登录查询数据库用户是否存在,注册插入数据到用户表.用户表字段: (chatid int primary key, passwd varchar ...

  2. SpringBoot(1.5.6.RELEASE)源码解析

    转自 https://www.cnblogs.com/dylan-java/p/7450914.html 启动SpringBoot,需要在入口函数所在的类上添加@SpringBootApplicati ...

  3. CNN:测试一下YoloV3

    项目地址:https://pjreddie.com/darknet/yolo/ mAP提升了不少,在VS上试一把 V3 的权值: https://pjreddie.com/media/files/yo ...

  4. HDU_1176_免费馅饼_16.4.23再做

    题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=1176 免费馅饼 Time Limit: 2000/1000 MS (Java/Others)    M ...

  5. CAD隐藏或显示工具条上的按钮(com接口VB语言)

    主要用到函数说明: MxDrawXCustomFunction::Mx_HideToolBarControl 隐藏或显示工具条上的按钮.详细说明如下: 参数 说明 IN LPCTSTR pszTool ...

  6. string 字符串--------redis

    APPEND 语法:APPEND KEY VALUE 如果key已经存在并且是一个字符串,append 命令将value追加到key原来的值的末尾. 如果key不存在,append就简单地将给定key ...

  7. Java排序算法全

    目录 Java排序算法代码 零. 排序基类 一. 选择排序 二. 插入排序 三. 希尔排序 四. 归并排序 1. 自顶向下 2. 自底向上 五. 快速排序 1. 基本版 2. 双路切分版 3. 三路切 ...

  8. 完善本地搭建的jekyll环境(Windows)

    序:上篇文章虽然在本地搭建好了jekyll环境,但是却存在一些问题,如通过jekyll new创建的站点无法正常跑起来.中文编码有问题.这说明之前搭建的环境有不周之处. PS:因之前自己搭建环境时并未 ...

  9. 小程序button默认样式透彻理解

    微信小程序有一个默认样式,特别是有一个外边框,虽然看起来不别扭,但是自己每次设置border:0:都不生效,写成内联的样式也不生效,后来才知道里面的边框是伪元素的边框,这里的伪元素可以理解为用css动 ...

  10. STL二分查找函数的应用

    应用二分查找的条件必须是数组有序! 其中二分查找函数有三个binary_serch,upper_bound,lower_bound 测试数组 int n1[]={1,2,2,3,3,4,5}; int ...