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

暫時就用到這么多,整理完休息一下~


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM