mysql默认的是没有给mysql设置密码可以直接登录
[root@zhangmengjunlinux ~]# mysql -uroot
Welcome to the MySQL monitor. Commands end with ; or \g.
Your MySQL connection id is 2
Server version: 5.1.73-log MySQL Community Server (GPL)
Copyright (c) 2000, 2013, Oracle and/or its affiliates. All rights reserved.
Oracle is a registered trademark of Oracle Corporation and/or its
affiliates. Other names may be trademarks of their respective
owners.
Type ‘help;‘ or ‘\h‘ for help. Type ‘\c‘ to clear the current input statement.
mysql>
但是在正常情况下为了安全考虑应该给mysql设置一个密码,用这个命令
[root@zhangmengjunlinux ~]# mysqladmin -uroot password ‘zhangmengjun‘密码
我们再次不用密码是登录不了的
[root@zhangmengjunlinux ~]# mysql -uroot
ERROR 1045 (28000): Access denied for user ‘root‘@‘localhost‘ (using password: NO)
我们用密码登录,这回能登录上了
[root@zhangmengjunlinux ~]# mysql -uroot -p
Enter password:
Welcome to the MySQL monitor. Commands end with ; or \g.
Your MySQL connection id is 6
Server version: 5.1.73-log MySQL Community Server (GPL)
Copyright (c) 2000, 2013, Oracle and/or its affiliates. All rights reserved.
Oracle is a registered trademark of Oracle Corporation and/or its
affiliates. Other names may be trademarks of their respective
owners.
Type ‘help;‘ or ‘\h‘ for help. Type ‘\c‘ to clear the current input statement.
mysql>
这个时候假如我们忘记了密码是什么,我们可以通过一个办法初始化一下首先要编辑配置文件
[root@zhangmengjunlinux ~]# vim /etc/my.cnf
在这个里面我们加入一条 skip_grant 不去授权
保存,重新启动mysql
[root@zhangmengjunlinux ~]# /etc/init.d/mysqld restart
Shutting down MySQL... SUCCESS!
Starting MySQL.... SUCCESS!
mysql从新启动完之后就可以无密码进去了
然后我们使用mysql库
mysql> use mysql 使用mysql库
Database changed
然后更新一个表新密码menglei
mysql> update user set password=password (‘menglei‘) where user=‘root‘;
Query OK, 3 rows affected (0.06 sec)
Rows matched: 3 Changed: 3 Warnings: 0
mysql>
在这里三行发生了改变,我们去看一下
mysql> select * from user where user=‘root‘\G;
*************************** 1. row ***************************
Host: localhost
User: root
Password: *F13236A6862262401791328A4F70F7B2721BF475
Select_priv: Y
Insert_priv: Y
Update_priv: Y
Delete_priv: Y
Create_priv: Y
Drop_priv: Y
Reload_priv: Y
Shutdown_priv: Y
Process_priv: Y
File_priv: Y
Grant_priv: Y
References_priv: Y
Index_priv: Y
Alter_priv: Y
Show_db_priv: Y
Super_priv: Y
Create_tmp_table_priv: Y
Lock_tables_priv: Y
Execute_priv: Y
Repl_slave_priv: Y
Repl_client_priv: Y
Create_view_priv: Y
Show_view_priv: Y
Create_routine_priv: Y
Alter_routine_priv: Y
Create_user_priv: Y
Event_priv: Y
Trigger_priv: Y
ssl_type:
ssl_cipher:
x509_issuer:
x509_subject:
max_questions: 0
max_updates: 0
max_connections: 0
max_user_connections: 0
*************************** 2. row ***************************
Host: zhangmengjunlinux.com
User: root
Password: *F13236A6862262401791328A4F70F7B2721BF475
Select_priv: Y
Insert_priv: Y
Update_priv: Y
Delete_priv: Y
Create_priv: Y
Drop_priv: Y
Reload_priv: Y
Shutdown_priv: Y
Process_priv: Y
File_priv: Y
Grant_priv: Y
References_priv: Y
Index_priv: Y
Alter_priv: Y
Show_db_priv: Y
Super_priv: Y
Create_tmp_table_priv: Y
Lock_tables_priv: Y
Execute_priv: Y
Repl_slave_priv: Y
Repl_client_priv: Y
Create_view_priv: Y
Show_view_priv: Y
Create_routine_priv: Y
Alter_routine_priv: Y
Create_user_priv: Y
Event_priv: Y
Trigger_priv: Y
ssl_type:
ssl_cipher:
x509_issuer:
x509_subject:
max_questions: 0
max_updates: 0
max_connections: 0
max_user_connections: 0
*************************** 3. row ***************************
Host: 127.0.0.1
User: root
Password: *F13236A6862262401791328A4F70F7B2721BF475
Select_priv: Y
Insert_priv: Y
Update_priv: Y
Delete_priv: Y
Create_priv: Y
Drop_priv: Y
Reload_priv: Y
Shutdown_priv: Y
Process_priv: Y
File_priv: Y
Grant_priv: Y
References_priv: Y
Index_priv: Y
Alter_priv: Y
Show_db_priv: Y
Super_priv: Y
Create_tmp_table_priv: Y
Lock_tables_priv: Y
Execute_priv: Y
Repl_slave_priv: Y
Repl_client_priv: Y
Create_view_priv: Y
Show_view_priv: Y
Create_routine_priv: Y
Alter_routine_priv: Y
Create_user_priv: Y
Event_priv: Y
Trigger_priv: Y
ssl_type:
ssl_cipher:
x509_issuer:
x509_subject:
max_questions: 0
max_updates: 0
max_connections: 0
max_user_connections: 0
3 rows in set (0.03 sec)
ERROR:
No query specified
mysql>
这个时候我们不用密码也能登上去,我们要先把配置文件里的skip_grant去掉
然后从新启动mysql,输入新的密码就可以登录了
mysql登录,本地登陆
[root@zhangmengjunlinux ~]# mysql -uroot -pmenglei
[root@zhangmengjunlinux ~]# mysql -uroot h192.168.140.100 -P3306 -pmenglei
这个时候是登陆不了的,我们来测一下有没有监听192.168.140.100 3306端口,提示不允许去连接,因为我们还没有授权,我们可以使用127.0.0.1去试一试,这个授权了
它可以登陆上去,那我们怎么样去给192.168.140.100授权呢,授权的语句
mysql> grant all on *.* to ‘root‘@‘192.168.140.100‘ identified by ‘menglei‘;
all是所有的权限 *.*库 表 @后面跟的是客户端的IP地址 by后面跟密码
我们可以select看一下
mysql> select * from user where host=‘192.168.140.100‘\G;
mysql> select user();
当本地有多个mysql时候,我们可以通过sock登陆
[root@zhangmengjunlinux ~]# mysql -uroot -S /tmp/mysql.sock -p
mysql> show databases;
我们可以切换库
mysql> use mysql;
Database changed
mysql> use discuz;
Database changed
mysql> 那我们怎么去看我们现在在哪个库里面呢
mysql> select database(); 查看在哪个库
mysql> select user(); 查看它在哪个用户
mysql> select version(); 查看这个用户的版本
我们现在使用的是discuz这个库,看看这个库里边有哪些表呢,关于数据库有几个概念,首先是库,库下面是表,表下面是行,行下面有一些字段 (库-表-行-字段);那我们首先看的是库
mysql> use discuz 这个命令可以加分号也可以不加分号,但其他的命令需要加
Database changed
看看有哪些表
mysql> show tables;
这是这个库里面都有哪些表,我们还可以看表有哪些行(表是怎么创建的)有包含了哪些字段
mysql> desc pre_common_admincp_cmenu;
desc 描述一个表
我们也可以看看这个表示的创建语句
mysql> show create table pre_common_admincp_cmenu\G;
那这个就是pre_common_admincp_cmenu这个表怎么去创建的
那下面我们来去创建一个库
mysql> create database mengjun;
Query OK, 1 row affected (0.02 sec)
mysql> use mengjun;
Database changed
然后创建一个表
mysql> create table tb1 (`id` int(4), `name` char(40)) ENGINE=MyISAM DEFAULT CHARSET=gbk;
Query OK, 0 rows affected (0.07 sec)
创建tb1表 ,id格式是int,长度4位, name格式是char长度是40
mysql> desc tb1;
mysql> show create table tb1\G; 可以看到创建表的语句
在表里插入语句
mysql> insert into tb1 values (1, ‘mengjun‘); 因为有连个字段id 和name所以我们要分开写,id是1,name我们要给mengjun加入‘单引号因为是char
插入完之后我们select一下看看
mysql> select * from tb1;
那我们还可以继续插入
mysql> insert into tb1 values (2,‘menglei‘);
当然我们也可以单独之插入一个字段
mysql> insert into tb1 (`id`) values(2);
Query OK, 1 row affected (0.00 sec)
你会发现这个时候name变成NULL空了 id 还是2
mysql> insert into tb1 (`name`) values (‘55‘);
Query OK, 1 row affected (0.00 sec)
我们也可以反过来定义先name在id
mysql> insert into tb1 (`name`,`id`) values(‘55‘,6);
我们还可以更新一个数据
mysql> update tb1 set id=5 where name=‘55‘;
下面我们删除一行
mysql> delete from tb1 where name=‘55‘;
清空一个表但是不能删除这个表
mysql> truncate table mengjun.tb1;
干倒一个表
mysql> drop table tb1;
干倒一个库
mysql> drop database mengjun;
在上面我们用过这个授权,其实授权也是创建新的用户,那我们讲一讲其他相关的概念
mysql> grant all on discuz.* to ‘user1‘@‘192.168.140.%‘ identified by ‘mengjun‘;
Query OK, 0 rows affected (0.12 sec)
on可以指定一个库discuz.跟一个表或许.*所有的表,to 跟用户名 @跟IP %号代表通配
有时候创建了用户没有即时生效,因为数据可能保存在内存里,还没有到硬盘里,这个时候需要刷新一下权限
mysql> flush privileges; 刷新权限
Query OK, 0 rows affected (0.00 sec)
mysql> show processlist; 这是查看当前数据有哪些列队,你这个数据库如果很忙的话,它可能会有很多的查询,让我们知道这个库具体在干些什么,就行我们linux系统里面的ps一样我们可以查看到都有哪些进程,任务在工作。
mysql> show variables;
查看变量,这些参数都可以再/etc/my.cnf里面去定义它的,那我们重新更改配置文件之后想让它生效得重启mysql的服务,有时候mysql的服务暂时用着它,我不想重启怎么办,可以再mysql里边操作
mysql> set global max_connections=200;
mysql> show variables like ‘max_conne%‘; like就像是grep
mysql的错误日志在data_dir下,
这里会看到和hostname同名的一个后面有err这个就是错误日志
mysql> repair table discuz.pre_forum_post;
原文:http://mengjunlinux.blog.51cto.com/10772888/1732697