mysql操作记录

零零散散用过好多次mysql,但是一直没有记录过怎么使用,每次都去找教程,有些麻烦,所以在这记录下常用的到的一些东西,以后找也方便。

第一课:不小心把database mysql给删了

本来是要删除我自己建的另一个数据库,但是鬼使神差的执行了下面一句

drop database mysql;

然后,在要从外部操作数据库的时候,就出现了下面问题:

ERROR 1146 (42S02): Table 'mysql.user' doesn't exist

妈蛋,mysql都被哥删了,哪里来的mysql.user啊。。。所以,从此走上了救赎之路。

救赎第一步,把mysql kill掉(用/etc/init.d/mysql stop不成功,就killall了),然后用mysql_install_db来重新装系统的table。

sudo killall mysqld
sudo mysql_install_db --user=mysql

哈,这时候再登入,就会出现下面这个问题,

Can't connect to local MySQL server through socket '/var/run/mysqld/mysqld.sock' 

造成这个问题的原因多种多样,搜一大堆解决方法,这里需要这样:

1、新建一个文本文档,比如/tmp/mysql-init.txt,把下面这一句拷贝进去(123456换做你密码)

SET PASSWORD FOR 'root'@'localhost' = PASSWORD(‘123456’);

2、用init文档来启动mysql

mysqld --init-file=/tmp/mysql-init.txt 

这里主要目的是为了修改密码,所以,看到密码修改已经成功的话,就可以ctrl-z了。

然后就好了,再用mysql -u root -p打开数据库,everything is ok!

权限操作

设定root密码:

mysqladmin -u root password 'new_password'

注意,除了上面这句是在cmdline下执行的,其它都是在mysql内对database mysql执行操作,所以,记得use mysql。

修改其它用户密码,注意,没有where的话,就是修改所有用户密码:

mysql> use mysql;
mysql> UPDATE user SET password=password('new_password') where user='root'; 
mysql> FLUSH PRIVILEGES;

删除空账户:

mysql> DELETE FROM user WHERE User = 'usr_name';
mysql> FLUSH PRIVILEGES; 

建立新账号:

mysql> GRANT priv_type ON db_name.tb_name TO user IDENTIFIED BY ‘password’
eg:
mysql> CREATE USER 'jeffrey'@'localhost' IDENTIFIED BY 'mypass';
mysql> GRANT ALL ON db1.* TO 'jeffrey'@'localhost';
mysql> GRANT SELECT ON db2.invoice TO 'jeffrey'@'localhost';
mysql> GRANT USAGE ON *.* TO 'jeffrey'@'localhost' WITH MAX_QUERIES_PER_HOUR 90;
mysql> FLUSH PRIVILEGES;

如果NO_AUTO_CREATE_USER没有被使用,而且密码不为空,GRANT会自动新建用户,即可以不用 ‘CREATE USER’ 一句。

Create user的另一个前提是你拥有该权限;而也必须是你拥有的权限,才能GRANT给别人。

数据库/数据表的操作

建立数据库:

CREATE DATABASE db_name

使用数据库:

USE db_nam

删除数据库,也可以用来删除数据表:

DROP DATABASE [IF EXISTS] db_name

建立数据表:

CREATE TABLE [IF NOT EXISTS] tbl_name (create_definition,...) [table_options] [select_statement]

 例子:

craete database basic;
use basic;
create table basic(
  no char(4)
  name char(10)
  id char(10));

drop table basic

查看数据库或表

#show the list of database
show databases;

#use database before get db_name.tb
use db_name;
#show tb list
in thins databases show tables;
#show the columns of the table describe tb_name;
#the abobe one equel to show columns from tb_name

#show the contents of tb
select * from tb_name

暂时就用到这么多,整理完休息一下~

原文地址:https://www.cnblogs.com/pied/p/3213847.html