linux下Mysql的简单操作,从零开始学数据结构和算法
2021/12/24 19:09:27
本文主要是介绍linux下Mysql的简单操作,从零开始学数据结构和算法,对大家解决编程问题具有一定的参考价值,需要的程序猿们随着小编来一起学习吧!
[root@localhost ~]# mysqladmin -uroot password ‘yourpassword’
这样就设置了 ‘root’ 账号的密码了,不妨再来用上面的命令登陆一下试试看:
[root@localhost ~]# mysql -uroot
ERROR 1045 (28000): Access denied for user ‘root’@‘localhost’ (using password:NO)
报错了,这是在提示我们,root账号是需要密码登陆的。
[root@localhost ~]# mysql -uroot -p’yourpassword’
Welcome to the MySQL monitor. Commands end with ; or \g.
Your MySQL connection id is 7
Server version: 5.1.40-log MySQL Community Server (GPL)
Type ‘help;’ or ‘\h’ for help. Type ‘\c’ to clear the current input statement.
mysql>
需要加一个 -p 选项,它后面可以直接跟密码,后面不可以有空格,不过密码最好用单引号括起来,不括也可以,但是密码中如果有特殊字符就会有问题了,所以最好是括起来吧。当然, -p后面也是可以不加密码,而是和用户交互的方式,让我们输入密码:
[root@localhost ~]# mysql -uroot -p
Enter password:
连接数据库
刚刚讲过通过使用 mysql -u root -p 就可以连接数据库了,但这只是连接的本地的数据库 “localhost”, 可是有很多时候都是去连接网络中的某一个主机上的mysql。
[root@localhost ~]# mysql -uroot -p -h192.168.137.10 -P3306
Enter password:
其中后边的 -P(大写) 用来指定远程主机mysql的绑定端口,默认都是3306, -h 用来指定远程主机的IP.
一些基本的MySQL操作命令
- 查询当前的库
mysql> show databases;
±-------------------+
| Database |
±-------------------+
| information_schema |
| mysql |
| test |
±-------------------+
3 rows in set (0.06 sec)
mysql的命令,结尾处需要加一个分号。
2. 查询某个库的表
首先需要切换到某个库里去:
mysql> use mysql;
Database changed
然后再把表列出来:
mysql> show tables;
±--------------------------+
| Tables_in_mysql |
±--------------------------+
| columns_priv |
| db |
| event |
| func |
| general_log |
| help_category |
| help_keyword |
| help_relation |
| help_topic |
| host |
| ndb_binlog_index |
| plugin |
| proc |
| procs_priv |
| servers |
| slow_log |
| tables_priv |
| time_zone |
| time_zone_leap_second |
| time_zone_name |
| time_zone_transition |
| time_zone_transition_type |
| user |
±--------------------------+
23 rows in set (0.06 sec)
- 查看某个表的全部字段
mysql> desc slow_log;
±---------------±-----------------±-----±----±------------------±----------------------------+
| Field | Type | Null | Key | Default | Extra |
±---------------±-----------------±-----±----±------------------±----------------------------+
| start_time | timestamp | NO | | CURRENT_TIMESTAMP | on update CURRENT_TIMESTAMP |
| user_host | mediumtext | NO | | NULL | |
| query_time | time | NO | | NULL | |
| lock_time | time | NO | | NULL | |
| rows_sent | int(11) | NO | | NULL | |
| rows_examined | int(11) | NO | | NULL | |
| db | varchar(512) | NO | | NULL | |
| last_insert_id | int(11) | NO | | NULL | |
| insert_id | int(11) | NO | | NULL | |
| server_id | int(10) unsigned | NO | | NULL | |
| sql_text | mediumtext | NO | | NULL | |
±---------------±-----------------±-----±----±------------------±----------------------------+
11 rows in set (0.04 sec)
也可以使用两一条命令,显示比这个更详细,而且可以把建表语句全部列出来:
mysql> show create table slow_log\G;
*************************** 1. row ***************************
Table: slow_log
Create Table: CREATE TABLE slow_log
(
start_time
timestamp NOT NULL DEFAULT CURRENT_TIMESTAMP ON UPDATE
CURRENT_TIMESTAMP,
user_host
mediumtext NOT NULL,
query_time
time NOT NULL,
lock_time
time NOT NULL,
rows_sent
int(11) NOT NULL,
rows_examined
int(11) NOT NULL,
db
varchar(512) NOT NULL,
last_insert_id
int(11) NOT NULL,
insert_id
int(11) NOT NULL,
server_id
int(10) unsigned NOT NULL,
sql_text
mediumtext NOT NULL
) ENGINE=CSV DEFAULT CHARSET=utf8 COMMENT=‘Slow log’
1 row in set (0.01 sec)
- 查看当前是哪个用户
mysql> select user();
±---------------+
| user() |
±---------------+
| root@localhost |
±---------------+
1 row in set (0.00 sec)
- 查看当前所使用数据库
mysql> select database();
±-----------+
| database() |
±-----------+
| mysql |
±-----------+
1 row in set (0.01 sec)
- 创建一个新库
mysql> create database db1;
Query OK, 1 row affected (0.05 sec)
- 创建一个新表
mysql> use db1;
Database changed
mysql> create table t1 (id
int(4), name
char(40));
Query OK, 0 rows affected (0.02 sec)
要注意的是,字段名需要用反引号括起来。
- 查看当前数据库版本
mysql> select version();
±-----------+
| version() |
±-----------+
| 5.1.40-log |
±-----------+
1 row in set (0.01 sec)
- 查看当前mysql状态
mysql> show status;
±----------------------------------±---------+
| Variable_name | Value |
±----------------------------------±---------+
| Aborted_clients | 0 |
| Aborted_connects | 5 |
| Binlog_cache_disk_use | 0 |
| Binlog_cache_use | 0 |
| Bytes_received | 303 |
| Bytes_sent | 7001 |
由于内容太长,阿铭没有全部列出来,如果有兴趣可以网上找资料查一下每一行的含义。
- 查看mysql的参数
mysql> show variables;
±----------------------------------------±--------------------+
| Variable_name | Value |
±----------------------------------------±--------------------+
| auto_increment_increment | 1 |
| auto_increment_offset | 1 |
| autocommit | ON |
| automatic_sp_privileges | ON |
| back_log | 50 |
| basedir | /usr/local/mysql/ |
限于篇幅,阿铭省略了很多参数没有显示,其中很多参数都是可以在/etc/my.cnf中定义的,并且有部分参数是可以在线编辑的。
- 修改mysql的参数
mysql> show variables like ‘max_connect%’;
±-------------------±------+
| Variable_name | Value |
±-------------------±------+
| max_connect_errors | 10 |
| max_connections | 151 |
±-------------------±------+
2 rows in set (0.00 sec)
mysql> set global max_connect_errors = 1000;
Query OK, 0 rows affected (0.01 sec)
mysql> show variables like ‘max_connect_errors’;
±-------------------±------+
| Variable_name | Value |
±-------------------±------+
| max_connect_errors | 1000 |
±-------------------±------+
1 row in set (0.01 sec)
在mysql命令行, “%” 类似于shell下的 *, 表示万能匹配。使用 “set global” 可以临时修改某些参数,但是重启mysqld服务后还会变为原来的,所以要想恒久生效,需要在配置文件 my.cnf 中定义。
- 查看当前mysql服务器的队列
这个在日常的管理工作中使用最为频繁,因为使用它可以查看当前mysql在干什么,可以发现是否有锁表:
mysql> show processlist;
±—±-----±----------±-----±--------±-----±------±-----------------+
| Id | User | Host | db | Command | Time | State | Info |
±—±-----±----------±-----±--------±-----±------±-----------------+
| 13 | root | localhost | db1 | Query | 0 | NULL | show processlist |
±—±-----±----------±-----±--------±-----±------±-----------------+
1 row in set (0.01 sec)
- 创建一个普通用户并授权
mysql>
《一线大厂Java面试题解析+后端开发学习笔记+最新架构讲解视频+实战项目源码讲义》
【docs.qq.com/doc/DSmxTbFJ1cmN1R2dB】 完整内容开源分享
grant all on . to user1 identified by ‘123456’;
Query OK, 0 rows affected (0.01 sec)
all 表示所有的权限(读、写、查询、删除等等操作), . 前面的 * 表示所有的数据库,后面的 * 表示所有的表,identified by 后面跟密码,用单引号括起来。这里的user1指的是localhost上的user1,如果是给网络上的其他机器上的某个用户授权则这样:
mysql> grant all on db1.* to ‘user2’@‘10.0.2.100’ identified by ‘111222’;
Query OK, 0 rows affected (0.01 sec)
用户和主机的IP之间有一个@,另外主机IP那里可以用%替代,表示所有主机,例如:
mysql> grant all on db1.* to ‘user3’@’%’ identified by ‘231222’;
Query OK, 0 rows affected (0.00 sec)
一些常用的sql
- 查询语句
mysql> select count(*) from mysql.user;
±---------+
| count(*) |
±---------+
| 8 |
±---------+
1 row in set (0.00 sec)
这篇关于linux下Mysql的简单操作,从零开始学数据结构和算法的文章就介绍到这儿,希望我们推荐的文章对大家有所帮助,也希望大家多多支持为之网!
- 2025-01-02MySQL 3主集群搭建
- 2024-12-25如何部署MySQL集群资料:新手入门教程
- 2024-12-24MySQL集群部署资料:新手入门教程
- 2024-12-24MySQL集群资料详解:新手入门教程
- 2024-12-24MySQL集群部署入门教程
- 2024-12-24部署MySQL集群学习:新手入门教程
- 2024-12-24部署MySQL集群入门:一步一步搭建指南
- 2024-12-07MySQL读写分离入门:轻松掌握数据库读写分离技术
- 2024-12-07MySQL读写分离入门教程
- 2024-12-07MySQL分库分表入门详解