Navicat中mysql版本低,不支持with as 语句怎么办?

将with as 语句换成 创建临时表语句

create  temporary table a (SELECT * FROM sms_record
WHERE mobile = '15810539987'
AND app_id = 'trade'
AND app_name = 'trade'
AND message LIKE '短信通道组测试%'
AND sent_time > '2021-09-09 14 : 30 : 00')

select * from a

with as 和 temporary 一个道理,都是将公用部分放到临时表中

### 如何从 Windows 中的 Navicat 连接到 Ubuntu 上的 MySQL #### 配置 Ubuntu 的 MySQL 服务以支持远程访问 为了使 Navicat 能够成功连接到 Ubuntu 上运行的 MySQL 数据库,需要先完成以下配置: 1. **更新并安装 MySQL** 使用 `apt` 命令来更新系统软件包列表,并安装最新版本MySQL Server 和客户端工具。这可以通过以下命令实现: ```bash sudo apt update sudo apt install -y mysql-server libmysqlclient-dev ``` 此外,还需要运行安全脚本来设置密码策略和其他安全性选项[^2]。 2. **修改绑定地址允许外部连接** 默认情况下,MySQL 只监听本地回环接口 (127.0.0.1),这意味着它仅接受来自同一台机器内部的应用程序请求。要启用远程访问,则需编辑 MySQL 主配置文件 `/etc/mysql/mysql.conf.d/mysqld.cnf` 并更改 bind-address 参数为 `0.0.0.0` 或具体的 IP 地址以便接收任何网络适配器上的传入流量。具体操作如下所示: ```bash sudo vi /etc/mysql/mysql.conf.d/mysqld.cnf ``` 找到行 `bind-address = 127.0.0.1` 改成 `bind-address = 0.0.0.0` 后保存退出[^3]。 3. **重启 MySQL 服务应用变更** 修改完成后记得重新启动 MySQL 服务让新的设定生效: ```bash sudo systemctl restart mysql.service ``` 4. **创建具有适当权限的新用户账户用于远程登录** 登录至 MySQL 控制台并通过 GRANT 权限语句赋予新建立好的用户名字及其主机名组合相应的数据库对象操作权利。例如下面的例子展示了如何授予名为 'myuser' 密码设为'mypassword', 对于所有来自于任意位置(`%`)的数据表拥有 SELECT, INSERT, UPDATE 和 DELETE 特权: ```sql CREATE USER 'myuser'@'%' IDENTIFIED BY 'mypassword'; GRANT ALL PRIVILEGES ON *.* TO 'myuser'@'%'; FLUSH PRIVILEGES; ``` 5. **防火墙规则调整开放必要端口** 如果启用了 UFW(Uncomplicated Firewall), 则可能还需添加例外放行默认用来通信的 TCP/3306 端口号给外界设备尝试连进来用: ```bash sudo ufw allow 3306/tcp sudo ufw reload ``` #### 设置 Navicat for Windows 客户端进行连接 当上述服务器端准备工作全部就绪之后,在 Navicat For Windows 应用里按照下述指引去新增一个 MySQL Connection: 1. 开始界面点击左上角 “新建连接”,选择类型为 "MySQL"; 2. 输入目标 Linux VM 的公网IP或者局域网内的私有IPv4作为 Hostname/IP Address 字段值; 3. Port Number 维持标准即 3306 不变除非之前自定义过其他数值; 4. Username 键入刚才设立的那个可以跨网段认证的身份标识符比如 myuser; 5. Password 处填写对应的密钥串也就是前面指定过的字符串形式如mypassword; 6. 测试链接看能否正常握手如果一切顺利的话应该会弹窗提示成功的消息框; 最后确认无误提交保存即可随时调取该条目快速恢复先前中断的工作流程了! ```python # 示例 Python 脚本验证连接状态 import pymysql.cursors connection = pymysql.connect(host='your_ubuntu_server_ip', user='myuser', password='mypassword', database='testdb', cursorclass=pymysql.cursors.DictCursor) try: with connection.cursor() as cursor: sql = "SELECT `version()`;" cursor.execute(sql) result = cursor.fetchone() print(result) finally: connection.close() ```
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值