My Database Pro | Boco Apps

What is My Database Pro?

My Database Pro is an all-in-one mobile tool for creating, browsing and managing databases directly on your phone — with no server required to get started. It combines a full local SQLite database manager, a remote MySQL client, a photo-capable record editor, an SQL console, a multi-tab code editor with a real built-in PHP interpreter, a web browser view, an SSH terminal, an SFTP/FTP file browser for your servers, a QR code and barcode scanner and maker that prints labels on A4, a reader that takes text off a photograph, and AI: a chat for any question, and helpers in SQL Query, the editor and the terminal that write a query, change a page or suggest a command in plain language — all in a single app.

The AI runs on an account of your own. The app carries no API key and sells no access to a model: you sign up with a provider, create a key there and paste it in — or point the app at a model running on your own machine, which costs nothing and never leaves your network. Section 14 says how. Everything else in this list works with no account of any kind.

A database created in the app can also be turned into a fully working website with one tap: the app generates a ready-to-use PHP page that displays your data as searchable, image-rich cards on any web server you own, complete with its own AI search box.

The app is translated into 50 languages, and the language can be chosen independently of the phone's own.

This page covers every screen and feature. It is part of the app rather than a website — My Database Pro › How to (the last button on the tool row) opens it, with no connection needed.

1. The Tool Row

Every screen in the app carries the same row of buttons: Databases, the seven tools and, last, My Database Pro, the app's own page. The buttons never move, so wherever you are, the one you want is under the same thumb. When they do not all fit across the screen the row scrolls sideways, and the next button is cut in half by the edge to show that there is more.

ButtonGoes to
DatabasesBack into the database you were working in, or out to the database list — see below.
SQL QueryThe SQL console, on whichever database you last used it.
AI ChatA plain AI chat for any question — see section 14. It can be taken off the row in My Database Pro → AI Settings.
EditorThe multi-tab code editor.
Web ViewThe in-app browser, on the page you last read.
TerminalThe SSH terminal, reconnecting to the last connection.
ServersYour SFTP and FTP servers — see section 10.
ToolsScan and create QR codes and barcodes, read text off a picture — see section 15.
My Database ProThe app's own page (the sliders icon): its settings, backup, help and version — see section 16.

Two things worth knowing

The button for the screen you are on is drawn with a filled background — since the row is identical everywhere, that patch of colour is what tells you where you are. A page inside a tool lights that tool: Editor Settings lights Editor, AI Settings lights My Database Pro. Inside a database — its tables, its records and their settings — Databases stays lit until you leave it, and SQL Query opened from inside a database lights both <> and Databases.

The app still opens on the database list, as it always has — and on a table straight away when Table opened at start is set. My Database Pro is where you go for the app itself; it has no ⚙ of its own, because the page is the settings.

Tools — scanning and printing QR codes and barcodes, reading text off a picture — has a section of its own: section 15.

2. Main Screen — Your Databases

The screen the app opens on, and the Databases button on the tool row. It lists every database you have: local SQLite databases (shown with a database icon) and remote MySQL connections (shown with a cloud icon).

Title bar

Managing the list

A fresh install arrives with three sample databases already unpacked — Chinook (the classic music-store sample, good for practising SQL), Animals (a small picture database that shows what image support looks like) and Products (a small product register — article number, EAN, price, stock, supplier — good for trying barcodes and the columns the app keeps up to date). If one of them could not be unpacked, the app tries it again the next time it starts; once they are all there, a sample you delete stays deleted.

3. Tables Screen

Tapping a database opens its list of tables. From here you can:

If a database is password-protected, you will be asked for the password before its tables are shown.

Table Settings

Thumbnails and Show all posts on open are each table's own, in its Post Settings — see section 4. They used to be set here for every table of the database, with each table able to differ; one switch on two screens was one too many. A table you never changed keeps what the database had.

4. Records (Posts) Screen

Opening a table shows its records. Depending on a setting, records are shown either 100 at a time with paging, or all at once.

Working with records

What a card shows

A card draws the columns you chose, in the table's column order. Both are on Post Settings → Columns: each row has an eye — press it and that column is off the card, press it again and it is back — and the grip that moves it.

What you can do with a picture

Tap a thumbnail and the picture opens full screen. The ⋮ in the corner there is the way back out of the app with it — for a long time there was none, and a photograph put into a record was a photograph that could not leave it.

All three work the same on a MySQL record, where the picture is on the server: it is fetched first, used, and the fetched copy is tidied away afterwards. Your own photograph on the phone is never moved or renamed — only copied.

Filling a field without typing

Two readers are offered on every box you can type in — when you edit a cell, and in the add-a-record dialog, where several fields are filled at once. Each offers the camera or a picture already on the phone, the same two words the record's photos use.

A reading is added, never put in place of what is there. It goes in at the caret and on a line of its own, so a box holding Data and a scan of maliki comes back as the two of them, one per line, rather than as Datamaliki. Read into an empty box it is just the reading.
Camera or gallery is one sheet, and its rows can be dragged. Hold a row and move it: the one you reach for lands at the top and stays there. Each sheet keeps its own order, because they are different decisions — a code reader is answered with the camera almost every time, and "add a picture" almost never is.
Both read into the box, never into the row. Nothing is saved until you press Save, exactly as if you had typed it — so a code that scanned wrongly is one you can correct or throw away, and a QR square holding a few thousand characters cannot write itself into your table.

Codes drawn from a column

Beside those two there are two more, and they work the other way round: they take what is in the field and draw it.

The app never guesses which you want: the same article number is a fair answer to both, and which one is wanted is a question about the table. From the picture either one shows you:

Show on card stores no picture. Flutter draws the code from the cell's text every time the row is drawn, so correcting the value corrects the code with it. One code under a value, not two — picking the other kind replaces it, because two stacked under one cell is a card nobody can read. Black on white whatever the theme — a scanner does not read a dark mode. A value nothing can be encoded from says so rather than drawing something a scanner would refuse.
Every QR is drawn with 15% error correction, not the 7% that would fit more in. These end up on labels in corridors, where a code is scuffed and rubbed at for years — and 2331 bytes is far more room than one record needs. One whole record of a real printer table measured 154 bytes, so fifteen of them would still fit in one square.
The cell editor is a list of rows, not a strip of icons. Scan a QR code or barcode, Read text from a picture, Create a QR code, Create a barcode — the same names and icons as on the Tools screen, each with its name beside it, and Cancel and Save at the foot where every other dialog puts them. The two that read into the box come first and the two that draw from it after, which is the order a value moves. The add-a-record dialog has a field per column and often a dozen of them, so it carries two icons under its title instead — Scan a QR code or barcode and Read text from a picture, acting on the field you are typing in. Only the two that read something in: a barcode is drawn from a value, and in that dialog there is no value yet. Its boxes grow with what is typed into them, up from one line, so a description of three lines is three lines you can see — and a reading off a photograph, which arrives as several, is not hidden in a box one line tall.

Columns the app fills in for you

Post Settings — how this table is listed

The ⚙ at the end of the records screen's title bar. Everything on it is about this table alone.

Search & sort

Column management

Post Settings → Columns lists the table's columns. + in its bar adds one; a column's ⋮ renames, retypes or deletes it; hold the grip (═) at the start of a row and drag to move it. On SQLite the first row is STRICT. A column's eye shows or hides it on the cards; a hidden one is drawn dimmed — see What a card shows above.

Column types

The type dropdown offers five, and which five depends on the table:

Ordinary tableSTRICT tableHolds
TEXTTEXTText. The default.
INTEGERINTEGERWhole numbers.
REALREALNumbers with decimals.
BLOBBLOBBinary data, stored exactly as given.
NUMERIC—A number where the value converts, text where it does not.
—ANYAnything, kept as it was given.

A STRICT table trades NUMERIC for ANY and then enforces the column's type on every write. That is SQLite's own rule rather than the app's. The dropdown switches by itself once a table is STRICT, and turning STRICT on names any column whose type is not allowed rather than failing with a raw database error.

There is no date type. SQLite has none — and it silently accepts any word you write as a type, so DATE is stored as plain text just as BANANA would be. Keep dates in a TEXT column in ISO order (2026-08-27, 2026-08-27 14:30:00) so that sorting and comparing work, or in an INTEGER column as a Unix timestamp. On a MySQL connection it is different: there DATE and DATETIME are real types.

Changing an existing column's type rebuilds the table and copies the values across without a CAST, so what fits is converted and what does not is left alone — 'abc' stays 'abc' rather than turning into 0. The app then tells you how many values did not take the new type. The primary key cannot be retyped: it carries AUTOINCREMENT, which only survives on INTEGER.

5. SQL Query

The SQL console, reachable with <> on the tool row from any screen; inside a database it opens on that database. It has syntax highlighting and takes any statement:

SELECT, INSERT, UPDATE, DELETE, CREATE TABLE, ALTER TABLE, ...

Results of a SELECT are shown as a paged table, and can be exported.

Two pickers in the title bar

Asking the AI for a query

The round light-blue AI button in the bottom right corner opens a chat about the database you are on — a file on the phone or a MySQL server. Ask in your own words: "albums from 1975 by year", "how many tracks has each genre", "why does my query fail". The AI knows this database's tables and columns and sees the query in the box.

Your query is kept

A half-written query is not lost when you step away to the Web View or the editor and come back. The text stays in the box until you clear it, saved per database — and per table when the screen was opened on one — so two tables never hand each other the wrong query.

The SQL Query button on the tool row also remembers which database you were last working on and returns you to it. The SQL button inside a database deliberately does not: it opens on its own database and leaves the remembered one alone, so a detour never moves where the tool row comes back to.

6. MySQL Connections

Add a remote MySQL server from the + button on the main screen. Once added, a MySQL connection is browsed exactly like a local database — same tables screen, same records screen, same SQL console — except every statement runs on the remote server.

The fields

The form is in two named groups, because it does two different jobs. MySQL is everything used to dial the database. Pictures is everything reached over HTTP instead — the PHP image API, the folder the photographs sit in, the two published pages, and the server all of that is uploaded through. The connection's name is above both, because it belongs to neither: it never reaches a server.

FieldWhat it is
Connection nameWhatever you want to call it in the list. It may be the same as a database on the phone — a database's copy on a server can carry the same name; the cloud in front of it tells the two apart, and each keeps its own Sort by, columns and settings. Two connections cannot share a name.
MySQL
Server IP/HostThe MySQL address — name.duckdns.org or srv123.hstgr.io. Never with http:// or https:// in front.
PortUsually 3306.
Username / PasswordThe MySQL account.
Database nameThe schema to open.
Use SSLEncrypts the MySQL connection. Also chooses https for the image API, but only when Image API host is empty and the address is an IP.
CA / client certificate, client keyThree optional PEM fields, shown only with Use SSL on. Leave empty for an ordinary public certificate — the app checks it. A server with a certificate of its own, such as Cloud SQL or anything behind a private authority, is best given that authority's certificate in CA certificate. A server that signs its own — a MariaDB at home usually does — is remembered the first time you connect and has to present the same certificate after that; if it ever changes, the app refuses and says so, because that is what something answering in the server's place looks like from here. Opening the connection from the database list then shows Server certificate changed with the remembered and the new fingerprint: Trust new certificate remembers exactly the one shown (behind the connection's lock, if it has one), and every connection to that server works again. Do that only when you expect the change — a host rebuilding or upgrading its server, as Hostinger does now and then — and the fingerprint matches what openssl s_client -starttls mysql -connect host:3306 | openssl x509 -noout -fingerprint -sha256 shows on a computer. Deleting the connection and adding it again still works too.
Pictures
Server API keyThe key defined in my_database_api.php on your web server. Needed for images. Make it a long random string — the file ships with none and refuses every call until you set one, on purpose: anyone who knows the key can write into the pictures folder. Tap my_database_api.php under the key and the app does it for you: it makes a key if there is none, writes it into the file, and puts the file on your paired server, in the folder above my_database_images/, or saves it on the phone. A file already on the server keeps its keys, so other phones go on working; only the code under them is updated. The app then calls the address and says whether the key is taken. Save the connection afterwards, or the new key is lost. Users, on the connection's ⋮ menu (behind its lock, if it has one), lists the people who use this database. Add a user asks their name and what they may do: everyone can read, and Add records, Edit records and Delete records are switches (Add and Edit start on). Tables themselves — making, renaming, deleting, their columns — stay yours. They get a picture key of their own: they add photos and delete only the ones they added, or any photo when they may delete records. Where your MySQL login is allowed to create users, they also get a MySQL login of their own whose rights on the server are exactly those switches, so the server itself refuses the rest, whatever program they use. Tap a user to change their rights: for a user with their own login the change is made on the server at once and counts the next time they open the database; no new file is needed. Where your login may not create users (shared hosting with one user per database), their file holds your login, and the app warns before making it: their rights then only hide buttons in the app, so anyone who knows the file's password can read your login out of it and use it with all your rights (phpMyAdmin, any MySQL program). Make it only for someone you would trust with your login; their changed rights reach them only with a new file. Either way, Make connection file gives a small file holding only their connection, protected by a password you tell them separately; shared, it carries the steps. On their phone: the database list's + → Add Connection from File, pick the file, type the password. It is added beside what they have (a connection of the same name asks Replace or Keep both). It is not a backup, and Restore does not read it. When the file holds your login, their phone never shows it: the connection's ⋮ menu has Rename instead of Edit Connection, and their backups carry it only when they have set a Backup password (the backup says so when it leaves it out), so they should keep the file. A file with their own login is theirs to see, edit and back up. The app remembers the folder my_database_api.php is in after the first time. A user's window also has Make connection file, to make their file again; the bin removes their login and key. New key for this phone (the circular arrow on your own row) replaces your key everywhere at once — do it after anyone who had your old key no longer should.
Image API hostOptional. Where my_database_api.php actually lives, when that is not the MySQL host. Empty, the API is assumed to sit on Server IP/Host — the usual shape. The line under this field is the address the app will really call, whichever of the two fields it was built from. It is shown here and nowhere else: under the MySQL host it would have named a machine that is not in that box.
Image folderOptional. The folder your pictures sit in under my_database_images/. Empty, it is the database name — the usual shape. It exists because shared hosting often forces an account id into the database name (u123456789_MyDb), and that name would otherwise stand in every public image URL. The full address is previewed under the field.
The two pagesNot fields. MyDb.php and MyDbai.php as whole addresses: tap either row to copy it, or the globe beside it to open the page in the app's own Web View.
SFTP serverWhich of the named servers (the Servers tool) this connection is paired with. It is the one an export offers first, the one a page refresh uploads the database through, and the one that clears the pictures away if you ever delete the connection with them. The picker asks which server, not whether — there is no "None" in it. A connection nobody has paired still reads None on the row, which is the state it is in rather than something anybody chose.
Times read the same wherever your server is. The app puts each MySQL connection on this phone's clock as soon as it connects, so a server running on UTC in a data centre and one under your desk both report a moment in the same words. Nothing already stored is changed — MySQL keeps a TIMESTAMP in UTC and converts it on the way in and out. Note that only TIMESTAMP works this way; a DATETIME column is never converted by anything.
A dropped connection is redialled. Shared hosts hang up on an idle connection within minutes, which used to break a long export halfway through. Now the app simply dials again and repeats the read. Only reads — an insert that reached the server but lost its reply is never sent twice.

Use SSL — and what it changes

With Image API host empty, the Use SSL switch does two things at once. It makes the MySQL connection itself encrypted, and it decides the scheme used to reach the image API:

Use SSL ON   →  https://name.duckdns.org/my_database_api.php
Use SSL OFF  →  http://name.duckdns.org/my_database_api.php

The line under Image API host shows that exact URL as you type, so there is never any doubt about what the app will call. This is also why Server IP/Host takes a bare address: the scheme is the switch's job, and a host typed as https://myserver.org produces https://https://... — which the preview shows you immediately.

Fill Image API host when the PHP file is not on the MySQL machine — Cloud SQL has no PHP, and a shared host's MySQL hostname is not the website. That same preview then follows this value instead:

https://example.com           →  https://example.com/my_database_api.php
https://example.com/my_database_api.php  →  used as typed
192.168.1.115                 →  http://192.168.1.115/my_database_api.php

A value that already has a scheme, or that already ends in .php, is used as typed. A bare address is reached over HTTP: the SSL switch is then only for MySQL's TLS, because a second host is almost always an IP without a certificate.

If the server sends HTTP on to HTTPS, pictures still show but adding, deleting or reordering them fails. The app then says The image server only answers over https and names the address to use — type it into Image API host with https:// in front.

If the PHP file sits on the MySQL host and that server only serves HTTPS, images will not work with Use SSL off. A certificate is issued for a name, not for an IP address, which is why a hostname is the better thing to put in Server host for a public server that also serves the API.

Certificates

With Use SSL on, three optional fields appear: CA certificate, client certificate and client key, each in PEM form. A folder button beside each one picks the file from the phone. Leave them empty for an ordinary public certificate; fill them in when your server expects a private CA or client authentication.

Images on MySQL

A local database keeps its images in a folder on the phone. A MySQL database cannot — so image folders live on your web server and are managed through my_database_api.php, using the API key from the connection dialog. Creating, renaming and duplicating a table keeps its image folder in step. Dropping one does not delete its pictures on the server — a photograph is the one thing no restore can invent, and the folder is yours to clear out when you mean to (Files on a server, the terminal, or your host's file manager). On the phone, where the folder is inside the app's own storage and nothing else can reach it, dropping a table does take its pictures with it. If the API key is missing, the app says so on entry: the database still works, but image features will not.

7. Import & Export

Export is a short wizard — the sheet tells you which step you are on, and Back returns to the previous one rather than cancelling everything.

Step 1 — Format

FormatWhat you get
ZIP archiveThe SQLite file plus a folder of every attached image.
Folder (all files)The same content as loose files rather than one archive: .db, images, .sql and .php.
SQLite databaseJust the raw .db file.
MySQL dumpA .sql script that recreates the data on a MySQL server.
PHP viewerA ready-to-host PHP web page — see section 9.
CSV tableOne CSV file per table; opens in any spreadsheet app.

Step 2 — Destination

DestinationWhere it goes
Copy to MySQL serverA database on the phone only, and first on the list. Not a file: the database is made a MySQL database on a server one of your saved logins reaches, its pictures go with it, and a connection to it is added to the database list. It asks which server, then fills in the connection form for you to check. The connection is given the phone database's own name.
Save to DeviceThe phone's own Save dialog: you choose the folder and the name there. It reaches anywhere the phone can see — internal storage, an SD card, Drive, another app's folder — and needs no permission at all.
ShareHanded to any other app — email, chat, cloud drive.
Upload to serverUploaded to your server as a single file, into its Remote Directory.
Update on serverThe whole set — database, images and the generated PHP viewer — into a folder on your own web server in one step. With Folder (all files) or MySQL dump it also writes the dump into the saved MySQL connection whose database has the name you give in step 3 (on Hostinger also u123456_Name): every table's rows on the server are replaced by the phone's. Formerly "Update on server".

Step 3 — Name

The file name is checked before anything is written. Characters that cause trouble on Android, on Windows or in a remote path are replaced with _; database exports are stricter still, because the name also ends up in the PHP viewer's URL. A name that is already taken is the system dialog's business — it numbers the new one — so the app no longer asks you about overwriting anything.

There is no size limit on an export. Everything is written and read a buffer at a time rather than held in memory, so a database with a few hundred megabytes of photographs saves exactly like a small one.

Import from...

A name already on the phone is asked about. Import a MyDb while you already have one and you are offered Replace or Keep both — kept, the incoming one lands as MyDb_1 and yours is untouched. Nothing is ever merged into an existing database: the two sets of images would end up in one folder, beside a database that knows nothing about half of them.
MySQL connections can be exported too, but have no "Update on server" option — a database that already lives on a server has no reason to be uploaded back to itself.

8. Backup & Restore

An export copies one database. A backup copies them all, in one action, into a single file — which is the one worth having before a new phone, a reinstall, or anything that makes you hesitate. Both rows are on the My Database Pro page.

Back up everything

One zip, holding four things:

The zip itself is the secret. Your logins are written into it in the clear, and that is deliberate: the stored form is encrypted under a key that cannot leave this phone, so a copy of it would open on no other device — written out plainly, it actually restores. Treat the file the way you would treat a sheet of paper with your passwords on it. Two things are deliberately left out: your database passwords, because a backup that could open its own encrypted files would not be worth much, and the Puter token, which is fetched again from the API key that is in the zip.
A backup password seals the logins. My Database Pro → Backup password. Once it is set, Back up everything asks for it before anything else, and the logins and the terminal hints go into the zip encrypted with it (AES-256) — unzipped, they are unreadable. The databases and pictures stay ordinary files. A restore asks for the same password; press Cancel there and everything comes back except the logins. Somebody you lend the phone to therefore cannot send themselves your passwords through a backup. Forget the password, and the logins in that backup are lost — the rest is not.

Restore from a backup

Add to this phone

Replace everything

This phone becomes the backup. Use it to make a second phone match the first — which is what it is for, and what merging could never do: restoring a four-server backup onto a phone that had its own servers used to leave you with seven.

Neither choice ever merges into a database that is already here. Your rows are never mixed with a backup's.

9. Publish to Web (PHP Viewer)

One of the app's signature features: turning any database into a real website with a single tap, no web-development knowledge needed.

Because it is a plain PHP file, the published page can be opened, inspected and customised in this app's own Code Editor — and actually run through the PHP Preview — before it is ever uploaded.

10. Servers — SFTP & FTP

A list of named servers, not one slot. The Servers button on the tool row opens that list; + in its title bar adds one, a row's three-dot menu has Configure, Duplicate and Delete, and tapping a server shows its files. Add as many as you have hosts — a home Mac Mini, a VPS, a shared-hosting account — each with its own name, address and folders.

A server speaks SFTP or plain FTP, and you say which. Most shared web hosting offers FTP on port 21 and no SSH at all, so a host like that can be set up and used exactly like an SFTP one. One thing genuinely differs: over FTP a file counts as changed by its size alone, because there is no dependable way to stamp a date onto what was just uploaded. Over SFTP the app sets the date itself and compares both.

One server, both protocols

A machine you can reach two ways is one entry, not two. The Protocol switch chooses which way is in use, and everything except the name is remembered separately for each — address, username, password, port, and both folders. Flip the switch and the other set comes back exactly as you left it.

That matters because the two are rarely alike:

Filling in a protocol you have not used yet starts from the address and account already on screen, since most servers answer both in one place; usually only the port and the password need changing.

The switch is a setting, not a question during an export. An upload uses whichever protocol the server is set to right now; to send over the other one, come back here and flip it. There is deliberately no automatic fallback — quietly dropping from SFTP to plaintext FTP is not a decision the app should make for you.
FieldExampleWhat it is
NameMy serverHow the server is listed. The name you pick from — two servers may not share one. Lists show the name and SFTP / FTP only; the address is seen only here, in the server's own form.
ProtocolSFTPSFTP or FTP — which one this server is using. Both are saved; see above.
Server IP/Host192.168.1.115
server.duckdns.org
The bare address, no http://.
Port22 / 2122 for SFTP, 21 for FTP. Checked as you type.
Username / PasswordrootThe server account.
Remote Directory/var/www/html/maps/Where a plain upload lands.
Upload folder/var/www/html/my_database_images/Where "Update on server" publishes. Must be writable by your account.

Test connection

On the same form, and worth using before your first upload. It dials, logs in and looks at both folders — using the fields as they stand, not as they were last saved.

Which server an upload goes to

A local database and a MySQL connection can each be paired with a server. A connection's pairing you choose, on SFTP server in its form. A local database's you do not: it is written down the first time an upload has to ask you which server to use, and the only place it can be seen afterwards is the Used by line under each server in the Servers tool. Either way, which server an upload actually uses is asked during the export, right after you choose the destination — so the folder shown in the later steps is the folder your file really lands in.

A folder upload is a sync, not a blind re-upload: the app scans what is already on the server, sends what changed, skips what did not, and removes files that no longer exist locally. When it finishes it reports how many files were uploaded, skipped, deleted and — if any — failed, so a partial upload is never mistaken for a complete one.

A folder path is always treated as a folder. If you type it without the trailing slash the app adds one, so an upload cannot end up writing a file alongside the folder instead of into it.

Files on a server — Servers

Shows what is actually on a server, and is how you put anything from your phone there — a photo, a PDF, a whole folder. Nothing else here does: every other feature writes into folders it was told about and never reads one back, so a file that landed in the wrong place stayed invisible until a page failed to change.

11. Code Editor & PHP Interpreter

A multi-tab code editor with syntax highlighting. Open and save files on the phone, undo/redo, and find and replace within a file.

Asking the AI to change the page

The round light-blue AI button floating in the bottom right corner — the same ✦ as AI on the tool row — opens a chat about the tab on screen. Say what to change — "make the header blue", "add a contact form" — or, in an empty tab, describe the page to make. Close the chat and you are back in the editor as it was. The button can be turned off in the editor's settings, which takes the AI out of the editor.

Working on files that live on a server

A .php on a web host is a file to edit, not one to download, change, and upload again by hand.

Editor settings

The editor has its own settings, separate from the app's:

The reminder note

Every time the editor opens, a tab called reminder.txt is ready and waiting — a persistent scratchpad that autosaves to the phone as you type, so it is always there for quick notes.

12. Web View

Opens any web address inside the app — a phpMyAdmin panel, a local web app, the PHP viewer page from section 9, or any page you built in the editor.

13. SSH Terminal

A full terminal (built on xterm) to any server you manage over SSH. Connections are saved by name, host, port, username and password.

The Terminal button on the tool row reconnects straight to the connection you last used, rather than making you pick it out of the list again; Back still reaches the list underneath. An SSH session cannot truly be resumed — leaving the screen drops the connection — so this reconnects rather than restores.

The server's host key is remembered the first time you reach it, and every connection after that has to present the same one — the same thing an ssh client does with a host it has never met. It is what makes the password you type go to the machine you meant. If a server is genuinely rebuilt its key really does change, and the app will refuse it; deleting the saved connection or server forgets the old key along with everything else kept under its name, and the next connection writes down the new one. The same check covers Files on a server and every upload.

The round light-blue AI button (✦) in the terminal's bottom right corner (it can be turned off in the terminal's settings) asks the AI about what is on the screen — why a command failed, how to find something on the server. It is shown the last lines of the terminal, never your password. A command it suggests has a Paste button that puts it at the prompt; it is not run until you press Enter yourself.

An extra key bar above the keyboard adds the keys a phone keyboard is missing:

CTRL ALT TAB ESC ⌫ / - Home End PgUp PgDn Copy Paste ↑↓←→ OK / Enter

Hold ⌫, ← or → and it repeats, the way a keyboard key does; a tap is still one.

Output text can be selected with on-screen handles for copying, the same way as in the editor. Drag a handle to the top or bottom edge and hold it there, and the text scrolls under it, so a selection longer than the screen needs no second finger.

Hints

The light bulb in the title bar opens your hints: commands you use often, one tap from the prompt. They open as a panel under the key bar, the way the keyboard does, so the terminal shrinks above it and the prompt stays in sight. A tap pastes the command into the prompt and never runs it — press OK to send it. The panel stays open for the next one; close it with ✕ or the bulb.

The hints are one text file, edited whole with the pencil in the panel. A line starting with ### names a hint, and the lines under it are its command:

###Create database Animals
mysql -u root -e "CREATE DATABASE Animals;"

###Import a .sql file from the phone into Animals
mysql -u root Animals < {file}

Save keeps your copy; Reset to default in the menu goes back to the hints the app ships with.

{file} in a command asks for a file. Tapping the hint asks where it is — this phone or a server, the same two answers a restore asks for — sends it to your home folder on the server over the connection you are already on, and pastes the command with {file} replaced by where it landed — for example mysql -u root Animals < ~/Animals.sql — waiting for OK. A file of the same name already there is replaced.

Or the app can write one for you. The third answer is Make one now: pick one of the databases on the phone and the app writes a fresh .sql of it, sends it up and fills the command in — no export, no Save to device, no hunting through Downloads. It is also the only one of the three that is guaranteed current; a dump sitting on a server is whatever the last export left there. Local databases only: dumping a server's database to feed it back into a shell on that same server is not a thing anybody wants.
And it does not ask which database when your command says. A hint reading mysql -u root MyDb < {file} is a hint about MyDb, so Make one now writes MyDb.sql and pastes it — no list to pick from, and no way to send the wrong database to a command naming another. It only does this when your command names exactly one of your databases: naming two, or naming one by accident (a database called root, in mysql -u root MyDb), brings the list back, because then the app has no right answer.
A server is offered because that is often where the file is. A .sql written by an export is as likely to be sitting on a web host as on the phone, and fetching it with something else just to pick it out of Downloads was the way round that. A file taken off a server is still sent up to the home folder rather than named where it lies: there is no telling from the terminal whether that server is this machine — a host answers to several names, and through two different logins — so the app never guesses.
Several lines pasted at once all go to the shell, not into a program the first line starts: mysql -u root followed by a CREATE line does not run the CREATE inside MySQL. Give MySQL the statement on the same line with -e "…".

14. AI Chat Assistant

The ✦ on the tool row is a plain AI chat: ask it anything, in any language, and it answers in the language you wrote in. It also knows how this app works: ask it how to do something here, or where a setting is, and it answers from this guide. It knows nothing of your data: for a query, use the AI button in SQL Query; for a page, the one in the editor; for a server, the one in the terminal.

The bar holds the name and the model in use. To start a new chat, tap the clear-chat button at the right end of the bar (greyed out while there is nothing to clear). Each answer has a Copy button under it that copies the whole answer. While something is typed in the box, the square inside it clears the text.

Provider & model

The API key is yours, and you have to go and get it. The app ships with none and cannot give you one — it is not a service you are buying here. Open an account with the provider you want, create a key on their site, and paste it into API key in My Database Pro → AI Settings. Whatever the model then costs is billed by that provider to that account. Until a key is in, the row says Not set and that provider's models will answer nothing.
What ships in that row is an example, not an address that will work for you. It points at a machine on the author's own network (http://10.139.243.1:11434/v1, model qwen2.5-coder:7b), which means nothing from your phone. To use it: install Ollama on your machine, ollama pull a model, let it listen on the network rather than only on localhost, then open My Database Pro → AI Settings → Edit providers (JSON) and put your own address and model name in. A model bigger than that machine's memory is read off the disk a token at a time, so pick one that fits — 7B is comfortable on 8 GB.

Voice

Other

15. Tools — QR Codes, Barcodes & Text

A QR code and barcode scanner, a QR code and barcode maker that prints labels on an A4 page, and a reader that takes the text off a photograph. They work on their own, with no database open; inside a table the same scanner and text reader fill a field for you (section 4).

Codes and text

The button before My Database Pro on the tool row. Four things to do, under Codes and text. Hold a row and drag it to put the one you use most on top; the order is kept.

Printing codes on an A4 page

Under the drawn code, both makers show the A4 page it will be printed on:

The PDF is drawn in lines, not pixels, so the code is sharp at any size and on any printer. Print and Save as PDF are also icons in the title bar.

Tools remembers the maker you left

Tools remembers the maker you left: go to another tool and come back to Tools, and it opens again with the same text, size and copies. Going back out to the Tools list yourself forgets it. It is remembered while the app is running.

16. My Database Pro (App Settings)

The last button on the tool row, with the sliders icon; the page is titled with the app's name. At the top: the app's icon, what it is and who made it; at the foot, the version and build number — which is how you tell one build from another. In between, the app's settings, grouped. A row with a choice opens a picker; a plain on/off is a switch on the row itself, here and on every settings screen.

Purchase

The app is unlocked with a purchase through Google Play, in one of two ways, and either unlocks everything:

Until the app is unlocked, the purchase screen is all it shows. The Purchase row says whether it is Unlocked or Read-only, and opens the purchase screen: Restore purchases asks Google Play again — on a new phone, or after buying on another one with the same Google account — and Manage subscription in Google Play is where a subscription is cancelled.

When a subscription ends the app turns read-only: your databases, on the phone and on your MySQL servers, still open and can be read, Back up everything and Export still work (an export to a server sends the files, but does not load them into a MySQL database), and nothing else does. The tools on the tool row are greyed out, and anything that would change data says Read-only: this needs a subscription, with Unlock to subscribe again. Nothing is deleted.

The app checks with Google Play when it starts and whenever it comes back to the front. Without a connection, a subscription Google Play has confirmed keeps working for 7 days; a one-time purchase keeps working for good.

Preferences

AI

Backup

About

This page was Setup, opened from the database list's ⚙. Choose Image Quality is about the databases rather than the app, so it stayed with them: the database list's ⚙ is Database Settings now (section 2). Thumbnails and Show all posts on open are per table, in each table's Post Settings (section 4). Codes and text and the servers are the Tools and Servers buttons on the tool row.

17. Security & Your Data

Keep your own backups of anything important. My Database Pro → Back up everything takes the lot in one file; a ZIP export of one database before a risky change takes seconds and includes its images.

18. Tips & Good Habits