前往小程序,Get更优阅读体验!
立即前往
发布
社区首页 >专栏 >MYSQL 8 从 MYSQL SHELL 开始

MYSQL 8 从 MYSQL SHELL 开始

作者头像
AustinDatabases
发布2022-04-05 14:30:20
发布2022-04-05 14:30:20
2.2K0
举报
文章被收录于专栏:AustinDatabasesAustinDatabases

基于mysql 5.x 大家一般都是通过mysql 客户端来管理MYSQL ,但基于ORACLE 对于MYSQL 8 整体的规划,如果仅仅基于 mysql 客户端命令来操作MYSQL 8 则就有点,不与时俱进了,上个系列从performance_schema说起还差一篇关于MYSQL 索引的问题,然后就告一段落了,那么后面会围绕着 MYSQL SHELL ,以及MYSQL 锁,锁的探查,以及问题的解决产生一个新的系列

基于MYSQL 8 后ORACLE 加大在MYSQL 各个方面的周边产品的研发,MYSQL SHELL 作为最新的控制和管理MYSQL 的一个方式的选择。

首先我们的安装我们的MYSQL SHELL ,mysql shell 一个有意思的地方是他与我们的MYSQL 的版本同时发布,如果有MYSQL 8.027 就有MYSQL shell 8.027 这个版本。

https://downloads.mysql.com/archives/shell/

1 直接运行 yum -y install mysql-shell-8.0.27-1.el7.x86_64.rpm

2 在安装完毕后,直接运行 mysqlsh 就进入到对应的环境中

3 常用的命令

在使用mysqlshell 的情况下我们一般使用的方式是在使用的命令前加斜杠 \

作为你要输入命令的开头。

\connect 的命令是在mysqlsh中连接你的mysql数据 \history 为展示你曾经执行的命令的回放 \js 切换到javascript 命令中

\py 切换到 python的状态中

\sql 切换到 SQL 语句的状态

mysqlshell 支持3中方式来管理你的MYSQL \nowarnings \w 关闭警告 \q 为退出你的操作界面

\ reconnect 重新对数据库进行连接

\rehash 更新自动补齐名字的缓存

\status 打印连接信息

\use 连接数据库中的其他数据库

\warnings 打开告警

在进行操作之前我们可以创建一个用于操作的账号

create usertest@'%' identified by '1234.Com';

grant all on *.*to test@'%';

4 准备通过mysql shell 的方式连接MYSQL

mysqlsh --sql--uri=test@192.168.198.101 -P3306 -p1234.Com -D mysql –vertical

5 通过SQL方式连入到MYSQLSHELL 后我们通过第一个简单的命令就可以获得我们的MYSQL上的一些统计信息,\status

6 在MYSQL 中运行一些LINUX 系统的命令,这个功能对于时长需要在系统和数据库之间进行工作的人比较方便

\system linux 命令

\system ls /data

7连接的方式的不同,针对MYSQL SHELL 连接MYSQL的不同主要在于MYSQLSHELL 提供了更多的功能,如PYTHON JAVASCRIPT 等,这样的连接的方式是使用 X Protocol 的方式来进行连接的方式,在连接前可以通过—mx 来标注你要用X协议的方式来连接,--mc则是使用老式传统的方式来对数据库进行连接。

8 查询数据的格式问题

Mysqlsh展示数据的方式主要有三种

1 针对json 数据的 josn pretty

2 针对传统数据的 table

3 针对传统数据的 vertical

mysqlsh--uri=test@192.168.198.101 -P3306 -p1234.Com -D world_x --sql -e "SELECTName,District, JSON_EXTRACT(info, '

mysqlsh--sql --uri=test@192.168.198.101 -P3306-p1234.Com -D world_x -e "SELECT Name as Sights FROMworld_x.city limit10" --table

mysqlsh--sql --uri=test@192.168.198.101 -P3306-p1234.Com -D world_x -e "SELECT Name as Sights FROMworld_x.city limit10" – vertical

9 通过PYTHON 来控制数据库

在MYSQLShell 的操作中可以通过python的代码来控制我们的数据库服务器系统,实际上我们通过X DEVAPI 来控制和掌握MYSQL 数据库系统。通过这个方法可以更有效的控制数据库中的关系数据类和方法,以及处理JSON文档对象。mysqlshell 提供了众多的操作数据库的函数来在py的环境下操作数据库,方便了开发者。

下面通过一些案例来进行操作

1 建立连接串,将连接的信息进行打包,

user_info = {

'host': '192.168.198.101',

'port': 33060,

'user': 'test',

'password': '1234.Com',

}

my_session = mysqlx.get_session(user_info)

通过get_session 的函数获取数据库的连接

2 获取当前数据库中的数据库列表

my_db = my_session.get_current_schema();

my_db = my_session.get_schemas()

3 获得当前连接的情况,是打开,还是关闭,可以关闭连接

my_session.isopen()

mysql_sesion.close()

4 获得当前的数据库,并执行SQL

my_db = my_session.set_current_schema('test')

下面我们通过一个综合性的操作来结束mysql shell 的文字

#引入一个创建表的变量并赋值

CREATE_TBL = """

CREATE TABLE `test`.`info` (

`id` int auto_increment,

`sensor_name` char(30) NOT NULL,

`sensor_value` float DEFAULT NULL,

`sensor_event` timestamp NOT NULL DEFAULT CURRENT_TIMESTAMP ON UPDATE

CURRENT_TIMESTAMP,

`sensor_units` char(15) DEFAULT NULL,

PRIMARY KEY `sensor_id` (`id`)

) ENGINE=InnoDB DEFAULT CHARSET=latin1

"""

#针对要查询的字段进行赋值

COLUMNS = ['sensor_name', 'sensor_value', 'sensor_units']

#复制连接字符串

user_info = {

'host': '192.168.198.101',

'port': 33060,

'user': 'test',

'password': '1234.Com',

}

#建立连接

my_session = mysqlx.get_session(user_info)

# 连接到test 数据库

my_db = my_session.set_current_schema('test')

# 执行SQL 创建表

sql_res = my_session.sql(CREATE_TBL).execute()

#获得操作表的变量

my_tbl = my_db.get_table('info')

# 插入数据

my_tbl.insert(COLUMNS).values('paint_vat_temp', 32.815, 'Celsius').execute()

my_tbl.insert(COLUMNS).values('tongue_height_variance', 1.52, 'mm').execute()

my_tbl.insert(COLUMNS).values('ambient_temperature', 24.5, 'Celsius').execute()

my_tbl.insert(COLUMNS).values('gross_weight', 1241.01, 'pounds').execute()

print("\nShowing results after inserting all rows.")

#获得整体表的数据

my_res = my_tbl.select(COLUMNS).execute()

#打印数据

for row in my_res.fetch_all():

print row

本文参与 腾讯云自媒体同步曝光计划,分享自微信公众号。
原始发表:2022-03-18,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 AustinDatabases 微信公众号,前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档