Linux下的mysql相关总结


一、启动

1.1 启动 MySQL

service mysql start

有时候可能不好用,也可以用下面这个命令

systemctl start mysqld.service

1.2 关闭 MySQL

service mysql stop

或者

systemctl stop mysqld

1.3 查看 MySQL 是否启动成功

service mysqld status
service mysql status

以上两个命令看情况,或者下面这个

systemctl status mysqld.service

二、进入MySQL

mysql -uroot -p123456

这里的“root”是用户名,“123456”是密码。但是在Linux中有时候需要进入到安装MySQL中的bin目录下执行下面这个操作

./mysql -uroot -p123456

三、密码的修改

3.1 有密码

方法一:不用登录直接修改

mysqladmin -u用户名 -p旧密码 password 新密码

例子:

mysqladmin -uroot -p123 password 123456

方法二:登录,然后修改密码

> set password for 用户名@localhost = password('新密码');

例子:

>set password for root@localhost = password('123456');

方法三:登录,直接修改user表

1.首先进入MySQL数据库

> use mysql; 

2.然后更新用户名为“root”并且主机是“localhost”的密码为新密码123

> update user set password=password('123') where user='root' and host='localhost'; 

3.刷新权限

> flush privileges;

3.2 忘记密码

1.查看MySQL是否启动,若启动,则关闭(见上方:一、启动)

2.编辑文件my.cnf

#文件路径的不同可能会有不一样的命令,下面的二选一
vi /etc/my.cnf
vi /etc/mysql/my.cnf

进入编辑模式命令:i

找到[mysqld],若没有,则自行添加即可

#添加下面两行(若存在则只添加第二行)目的是跳过密码登录
[mysqld]
skip-grant-tables

退出编辑模式“Esc”

保存并推出

:wq!

3.重启MySQL(见上方:一、启动)

4.进入MySQL

mysql -uroot
#直接回车就好,密码已经跳过

5.修改root密码(见上方:3.1中的方法二或者方法三)

6.删除/etc/my.cnf文件中刚刚添加的部分

7.重启MySQL

service mysqld restart    

如果这个命令不好用就关闭再开启。

8.利用新密码进入MySQL

修改密码结束啦~

四、常用的命令

注意:SQL 对大小写不敏感

4.1 展示数据库列表

>show databases;

4.2 创建删除数据库

#创建
>create database 数据库名;
#删除
>drop database 数据库名;

4.3 进入数据库

use 数据库名;

4.4 展示数据库中的表

show tables;

4.5查看表中数据

SELECT * FROM 表名;

若指定看”fire“表中的”name“和”age“两列

SELECT name,age FROM fire;

4.6查看不同值

下面的 SQL 语句仅从 “fire” 表的 “country” 列中选取唯一不同的值,也就是去掉 “country” 列重复值:

SELECT DISTINCT country FROM fire;

4.7查看特定值

从 “fire” 表中选取国家为 “CN”

SELECT * FROM fire WHERE country='CN';

如果是数字则不需要引号

SELECT * FROM fire WHERE id=1;

4.8插入

假设我们要向 “fire” 表中插入一个新行。

INSERT INTO fire (name, url, alexa, country)
VALUES ('百度','https://www.baidu.com/','4','CN');

4.9更新

在”fire“表中,把 “milu” 的 alexa 排名更新为 5000,country 改为 abc。

UPDATE fire 
SET alexa='5000', country='abc' 
WHERE name='milu';

4.10删除

从 “fire” 表中删除名为 “anquan” 且国家为 USA 的数据。

DELETE FROM fire
WHERE name='anquan' AND country='USA';

如果想要删除表中所有数据,但是并不想删除表的话可以用下面的命令(二选一即可)

DELETE FROM table_name;
DELETE * FROM table_name;

注意:删除需谨慎,无法撤回!!!

五、导入、导出数据库

5.1导出指定数据库、数据表

注意:有些需要在MySQL中的bin目录下进行

./mysqldump -u用户名 -p密码 --databases 数据库名 > /路径/路径/导出的表名.sql

例子:

./mysqldump -uroot -p密码 --databases fire > /root/Public/fire20210202.sql

导出表:

mysqldump -u root -p 数据库名 数据表名 > /路径/导出数据表名.sql

5.2导出所有数据库

./mysqldump -u用户名 -p密码 --all-databases >导出路径

5.3导出指定数据库的结构(无数据)

mysqldump -u用户名 -p密码 --no-data --databases 数据库名>导出路径

5.4导出指定数据库中的指定表

mysqldump -u用户名 -p密码 --databases 数据库名 --tables 数据表名>导出路径

5.5导出指定数据库中的指定表的结构(无数据)

mysqldump -u用户名 -p密码 --no-data --databases 数据库名 --tables 数据表名>导出路径

5.6.导出指定数据库中的指定表,设置查询条件

mysqldump -u用户名 -p密码 --databases 数据库名 --tables 数据表名 --where='条件'>导出路径

5.7.跨服务器备份数据库

将 host1 服务器中的 db1 数据库的所有数据导入到 host2 中的db2数据库中,db2的数据库必须存在否则会报错

mysqldump --host=host1 -u用户名 -p密码 --databases db1 |mysql --host=host2 -u用户名 -p密码 --databases db2

5.8导入数据库

1.为了尽可能的避免错误,首先需要删除相应的数据库

drop database 数据库名;

2.创建同名数据库

create database 数据库名;

3.导入数据库

方法一:

#在MySQL外面导入
./mysql -uroot -p密码 fire </root/Public/fireimport20210202.sql

方法二:

#在MySQL里面利用source导入
source /root/Public/fireimport20210202.sql;

5.9数据库导入数据表

切换到数据库下:

use 数据库名;

导入数据表

source /home/users.sql

注:/home/users.sql是路径++数据表sql文件

5.9导入失败

错误:ERROR 1273 (HY000): Unknown collation: 'utf8mb4_0900_ai_ci'

是因为Linux下MySQL版本不兼容导致的

• 把文件中的所有的utf8mb4_0900_ai_ci替换为utf8_general_ci
• 以及utf8mb4替换为utf8

利用全局搜索替换就可以

如果用nodepad++的话利用快捷键ctrl+F,然后全局替换就可以了。

参考链接1

参考链接2


文章作者: milu
版权声明: 本博客所有文章除特別声明外,均采用 CC BY 4.0 许可协议。转载请注明来源 milu !
  目录