• 学会使用简单的 MySQL 常用操作


    一、MySQL 数据库的基本安装

    # yum 安装 mysql 版本:5.1.73
    [root@mysql ~]# yum install -y mysql-server mysql
    
    # 启动 MySQL 数据库
    [root@mysql ~]# service mysqld start

     

    二、更改 Mysql 数据库 root 密码

    1. 当前 MySQL 没有 root 密码:

    如果当前 root 账户没有设置密码,则要修改root密码为:abcdef

    [root@mysql ~]# mysqladmin -u root password "abcdef"

    2. 当前 MySQL 存在 root 密码

    如果当前 root 账户已经设置了密码(abcdef), 要修改密码为:123456

    [root@mysql ~]# mysqladmin -u root -p password "123456"

    根据提示,输入之前的旧密码 "abcdef"

    3. 忘记 root 密码

    1) 编辑 mysql 主配置文件 vim /etc/my.cnf
       在[mysqld]字段下添加参数 skip-grant
    2) 重启数据库服务 service mysqld restart
    3) 这样就可以进入数据库不用授权了 mysql -uroot
    4) 修改相应用户密码 use mysql;

    mysql> update user set password=password('your password') where user='root';
    mysql> flush privileges;

    5) 修改 /etc/my.cnf 去掉 skip-grant , 重启 mysql 服务

     

    三、MySQL 用户设置

    MySQL 安装后默认有一个 root 用户,可以添加其它用户,MySQL 有多种添加用户的方式。

    1. 通过 user 表来添加设置用户

    以下为添加用户的的实例,用户名为guest,密码为guest123,并授权用户可进行 select, insert 和 update 操作权限。

    [root@mysql ~]# mysql -uroot -p
    Enter password: ******
    mysql> use mysql;
    Database changed
    
    mysql> insert into user (host, user, password, select_priv, insert_priv, update_priv)
        -> values ('localhost', 'guest', password('guest123'), 'Y', 'Y', 'Y');
    Query OK, 1 row affected, 3 warnings (0.00 sec)
    
    mysql> flush privileges;    # 重新载入授权表
    Query OK, 0 rows affected (0.00 sec)
    
    mysql> select host, user, password from user where user = 'guest';
    +-----------+-------+-------------------------------------------+
    | host      | user  | password                                  |
    +-----------+-------+-------------------------------------------+
    | localhost | guest | *F1573429579994EEA4459170FDAC55DF96C4BBE6 |
    +-----------+-------+-------------------------------------------+
    1 row in set (0.00 sec)

    在添加用户时,请注意使用 MySQL 提供的 password() 函数来对密码进行加密。

    2. 通过 grant 命令来添加设置用户

    另外一种添加用户的方法为通过SQL的 grant 命令,你下命令会给指定数据库 test 添加用户 guest 密码为 guest123

    [root@mysql ~]# mysql -u root -p
    Enter password: ******
    mysql> use test;   # 貌似不切换到 test 数据库也是可以的。
    Database changed
    mysql> grant select, insert, update, delete, create, drop on test.* to 'guest'@'localhost' identified by 'guest123';
    Query OK, 0 rows affected (0.00 sec)
    
    mysql> flush privileges;
    Query OK, 0 rows affected (0.00 sec)

     

    四、连接数据库

    1. 使用 mysql 客户端命令进行连接

    [root@localhost ~]# mysql -uroot -h 172.16.1.22 -P3306 -piweb_xxx_mysql

    2. 使用 C 语言代码进行连接

    待更新。。。

    3. 使用 Python 语言代码进行连接

    待更新。。。

     

    五、一些基本的 MySQL 操作命令

    1. 查看当前数据库版本

    mysql> select version();
    +-----------+
    | version() |
    +-----------+
    | 5.1.73    |
    +-----------+
    1 row in set (0.01 sec)

    2. 创建一个数据库

    mysql> create database liwei;
    Query OK, 1 row affected (0.00 sec)
    [root@mysql ~]# mysqladmin -u root -p create liwei
    Enter password:******

    3. 删除一个数据库

    mysql> drop database liwei;
    Query OK, 0 rows affected (0.02 sec)
    [root@mysql ~]# mysqladmin -u root -p drop liwei
    Enter password:******

    4. 查看系统有哪些库

    mysql> show databases;

    5. 切换到某个数据库

    mysql> use test;
    Database changed

    6. 查看当前使用的库

    mysql> select database();
    +------------+
    | database() |
    +------------+
    | test       |
    +------------+

    7. 查看当前用户

    mysql> select user();
    +----------------+
    | user()         |
    +----------------+
    | root@localhost |
    +----------------+

    8. 查看当前库有哪些表 table

    mysql> show tables;
    Empty set (0.00 sec)

    9. 查看表的全部字段

    mysql> desc func;
    +-------+------------------------------+------+-----+---------+-------+
    | Field | Type                         | Null | Key | Default | Extra |
    +-------+------------------------------+------+-----+---------+-------+
    | name  | char(64)                     | NO   | PRI |         |       |
    | ret   | tinyint(1)                   | NO   |     | 0       |       |
    | dl    | char(128)                    | NO   |     |         |       |
    | type  | enum('function','aggregate') | NO   |     | NULL    |       |
    +-------+------------------------------+------+-----+---------+-------+
    4 rows in set (0.00 sec)

    # 也可以使用这一条命令,显示比这个更详细,而且可以把建表语句全部列出来

    待更新。。。

    10. 创建一个新表

    mysql> use test;
    Database changed
    mysql> create table t1 (`id` int(4), `name` char(40));
    Query OK, 0 rows affected (0.01 sec)

    11. 查看当前 MySQL 状态

    mysql> show status;

    12. 查看 MySQL 参数

    mysql> show variables;

    其中很多参数是可以在/etc/my.cnf中定义的,并且有部分参数是可以在线编辑的。

    13. 修改 MySQL 的参数

    mysql> show variables like 'max_connect%'
    mysql> set global max_connect_errors = 1000;
    mysql> show variables like 'max_connect_errors';

    在 MySQL 命令行,"%" 类似于 shell 下的 * 表示万能匹配。使用 "set global" 可以临时修改某些参数,但是重启 mysqld 服务后还会变为原来的,所以要想恒久生效,需要在配置文件 my.cnf 中定义。

    14. 查看当前 MySQL 服务器的队列

    mysql> show processlist;

    在日常工作中使用最为频繁,使用它可以查看 MySQL 在干什么,可以发现是否有锁表。

    15. 创建一个普通用户并授权

    mysql> grant all on *.* to user1 identified by '123456';

    all 表示所有的权限(读、写、查询、删除等操作),*.*前面的 * 表示所有的数据库,后面的 * 表示所有的表,identified by 后面跟密码,用个单引号括起来。这里的 user1 指的是 localhost 上的 user1,如果是给网络上其他机器上的某个用户授权则这样:

    mysql> grant all on db1.* to 'user2'@'172.16.1.22' identified by '111222';

    用户和主机的 IP 之间有一个@,另外主机 IP 那里可以用 % 替代,表示所有主机,例如:

    mysql> grant all on db1.* to 'user3'@'%' identified by '111222';

     

    五、一些常用的 SQL

    1. 查询语句

    mysql> select count(*) from mysql.user;
    # mysql.user表示mysql库的user表;count(*)表示表中共有多少行。
    mysql
    > select * from mysql.db; # 这个用来表示查询mysql库的db表中的所有数据,也可以查询单个字段或者多个字段:
    mysql> select db from mysql.db;
    mysql> select db,user from mysql.db;
    # 同样,在查询语句中可以使用万能匹配"%"
    mysql> select * from mysql.db where host like '10.0.%';

    2. 插入一行

    mysql> insert into db1.t1 values (1, 'abc');

    3. 更改表的某一行

    mysql> update db1.t1 set name='aaa' where id=1;
    mysql> select * from db1.t1;

    4. 清空表数据

    mysql> truncate table db1.t1;
    mysql> select count(*) from db1.t1;

    5. 删除表

    mysql> drop table db1.t1;

    6. 删除数据库

    mysql> drop database db1;

     

    六、MySQL 数据库的备份与恢复

    1. 备份

    mysqldump -uroot -p'iweb_xxxx_mysql' mysql > /tmp/mysql.sql

    使用mysqldump命令备份数据库,"mysql"指的是数据库名,然后重定向到一个文本文档里。可以查看/tmp/mysql.sql文件内容。

    2. 恢复

    mysql -uroot -p'iweb_xxxx_mysql' mysql < /tmp/mysql.sql

     

    ---------- 本文结束 ----------

  • 相关阅读:
    单点登录实现机制:web-sso
    阿里云API网关(16)客户端请求的https支持
    阿里云API网关(15)监控预警
    BZOJ1802: [Ahoi2009]checker(性质分析 dp)
    LOJ#505. 「LibreOJ β Round」ZQC 的游戏(最大流)
    LOJ#6085. 「美团 CodeM 资格赛」优惠券(set)
    洛谷P3924 康娜的线段树(期望 前缀和)
    BZOJ2337: [HNOI2011]XOR和路径(期望 高斯消元)
    2016计蒜之道复赛 百度地图的实时路况(Floyd 分治)
    洛谷P2881 [USACO07MAR]排名的牛Ranking the Cows(bitset Floyd)
  • 原文地址:https://www.cnblogs.com/liwei0526vip/p/vamei.html
Copyright © 2020-2023  润新知