<!--
title: Install by importing SQL (no terminal)
section: Installation
order: 12
keywords: sql, import, phpmyadmin, schema.sql, seed.sql, no terminal, cpanel, shared hosting, app key, admin@example.com, ChangeMe-123, storage link, password banner
-->
# Install by importing SQL (no terminal)

Some hosting plans give you no terminal and no SSH. You can still install POSMaster. Instead of running the installer, you **import a ready-made database** with phpMyAdmin and upload the app with your file manager or FTP.

The download package has two SQL files in its top-level `database` folder:

| File | What you get |
|------|--------------|
| `database/schema.sql` | A **clean shop**. All tables, roles and permissions, languages, units, tax rates, one branch called "Main Store", and one Super Admin. Demo mode is off. |
| `database/seed.sql` | The **demo shop**: 3 branches, 81 products, customers and 90 days of sales, with the demo accounts. Demo mode is on. |

Use `schema.sql` for a real shop and `seed.sql` for a demo or a trial.

> **Note:** Import only one of the two files, into an **empty** database. Do not import both into the same database.

## Step 1: Upload the app

Upload the `laravel-project` folder to your host and point your domain to its `public` folder. The steps for a cPanel host are in [Install on web hosting](install-hosting.html), sections 1 to 3. Come back here when the files are uploaded.

## Step 2: Create the database

1. In your hosting control panel (for example cPanel **MySQL Databases**), create a database and a database user. Give the user all privileges on the database.
2. Open phpMyAdmin and select the new database.
3. Check the collation. It should be `utf8mb4_unicode_ci`. If you create the database in phpMyAdmin, choose that collation in the **New** form.

## Step 3: Import the SQL file

1. In phpMyAdmin, with the database selected, click the **Import** tab.
2. Click **Choose file** and select `database/schema.sql` (clean shop) or `database/seed.sql` (demo shop).
3. Leave the format as **SQL** and the character set as **utf8mb4**.
4. Click **Import** (or **Go**).
5. Wait for the green message "Import has been successfully finished".

> **Tip:** `seed.sql` is much bigger than `schema.sql`. If phpMyAdmin says the file is too large or the import times out, ask your host to raise the upload limit, or split the import with a tool such as BigDump. Or ask the host's support to import the file for you. A clean `schema.sql` is small and normally imports without problems.

## Step 4: Create the .env file

In the app folder, copy `.env.example` to `.env` (File Manager: right-click, **Copy**, then rename the copy). Edit it and set at least:

```ini
APP_ENV=production
APP_DEBUG=false
APP_URL=https://shop.example.com
APP_KEY=base64:PASTE-YOUR-KEY-HERE

DB_CONNECTION=mysql
DB_HOST=localhost
DB_PORT=3306
DB_DATABASE=cpuser_posmaster
DB_USERNAME=cpuser_pos
DB_PASSWORD=your-database-password
```

- `APP_URL` must be the exact address of your site, including `https://`.
- Use the database name, user and password from step 2.
- Leave `DB_HOST` as `localhost` unless your host tells you otherwise.

### About APP_KEY

`APP_KEY` is a secret key the app uses to protect sessions and cookies. On a normal install the installer creates it. When you install by SQL, **you must create it yourself**, because the installer does not run.

The key must be a random value that starts with `base64:`, followed by 44 letters, numbers and symbols that end with `=`. Never copy a key from a guide or a forum. Always make your own.

To make your own key, use any one of these:

- **A PHP terminal on any computer.** If you have PHP on your own PC (for example XAMPP), run:

```bash
php -r "echo 'base64:'.base64_encode(random_bytes(32));"
```

  Copy the whole result, including `base64:`, into `.env`.

- **Ask your host.** Many hosts can run one command for you or give you a terminal for a minute. Ask them to run the command above, or `php artisan key:generate --show` inside your app folder.

> **Warning:** Do not leave `APP_KEY` empty. The site shows "No application encryption key has been specified". Do not use a simple word as the key. Keep the key private, and keep a copy of it with your backups. If you change it later, everybody is signed out.

## Step 5: Make the folders writable

`storage` and `bootstrap/cache` must be writable. In File Manager, set them to `755` (use `775` if you still see errors), including their sub-folders. More details are in [Install on web hosting](install-hosting.html#folder-permissions).

## Step 6: Show pictures (the storage link)

Uploaded pictures such as your logo and product photos are stored in `storage/app/public`. The browser reaches them through a link called `public/storage`. The installer normally creates this link. With an SQL install nobody has run the installer, so you need to create it.

Ways to create it without running Laravel commands:

- **cPanel File Manager.** Some hosts allow it. Create a symbolic link named `storage` inside the public folder that points to `storage/app/public` in the app folder.
- **Ask your host's support.** This is a quick request: "Please create a symbolic link named `storage` in `public_html` pointing to `/home/USER/posmaster/storage/app/public`."
- **Use SSH once**, if your host offers it, and run `php artisan storage:link`.

> **Note:** Without the link, POSMaster still works. Only uploaded pictures (logo, product images) do not show.

If you imported `seed.sql` (the demo shop), also upload the demo product pictures from the package folder `storage/app/public/demo` to the same place on your server: `storage/app/public/demo`. Upload them with FTP or File Manager. Without them, the demo products have no pictures.

## Step 7: First sign-in

Open your site address.

**If you imported `schema.sql` (clean shop):**

1. Sign in with email **admin@example.com** and password **ChangeMe-123**.
2. A red banner appears at the top of every page: "You are using the default password from the installer. Change it now to keep your shop safe."
3. Click **Change password** in the banner. This opens your profile.
4. Enter the current password, type a new strong password twice, and save.
5. The banner disappears. Also change the name and email of this account to your own details.

> **Warning:** The default password is public. Anyone who reads this guide knows it. Change it **immediately**, before you add real data.

**If you imported `seed.sql` (demo shop):** sign in with `superadmin@posmaster.test` and the password `password`. See the list of [demo accounts](index.html#demo-accounts). Demo mode is on, so passwords cannot be changed and nothing can be deleted. This version is for trials, not for a real shop.

## Turn a demo into a real shop

If you imported `seed.sql` and later want a real shop, the easiest way is to start again with `schema.sql`:

1. In phpMyAdmin, select the database, tick **Check all** and choose **Drop** to remove all tables.
2. Import `database/schema.sql`.
3. Sign in as admin@example.com and change the password.

## Check that it worked

1. The sign-in page loads without errors.
2. After signing in, the dashboard opens.
3. In **Settings → Business**, set your business name, currency and timezone.
4. Continue with [First steps after installing](first-steps.html).

If you see a blank page or a 500 error, open [Troubleshooting](troubleshooting.html).
