The default administrator password
This page is for whoever installs Exponential, and for administrators taking over an installation. Every
installation has one administrator account to begin with: login admin (user object 14, in the group
Administrator users, with the Administrator role). What its password is depends on how the site was
installed. This page lists it for each way, as the code of Exponential 6.0.15 does it.
Warning
Whatever the installer set, change the administrator password right after the first sign-in, give the
account a real e-mail address, and delete var/log/initial-admin-password if it exists. Then create a personal
administrator account and retire admin as a sign-in (Account hygiene). How to change it:
Change the administrator password.
In short
| How the site was installed | Login | Password after the installation |
|---|---|---|
| Setup wizard in the browser | admin | the one you typed in the wizard; there is no default |
Kickstarter (exp:kickstarter run with kickstart.ini) | admin | [site_admin] Password= from kickstart.ini; when it is empty, shorter than MinPasswordLength or a well-known word, a random 20-character password, printed once and written to var/log/initial-admin-password |
Console install (exp:install) | admin | --password= when it is long enough and not a well-known word; otherwise a random 24-character password, printed at the end and written to var/log/initial-admin-password |
| The shipped database seed, loaded by hand without an installer | admin | publish: the historical default, known to everyone |
| Site packages (the 7x and community packages) | admin | no change: packages carry no accounts; the installer above sets the password |
No installer of Exponential 6 leaves publish in place. It survives only where the database was created from the
seed without an installer, or where the wizard was told to keep an existing database that still had it.
The setup wizard
The web setup wizard (setup/init, chapter 5) has a step for the administrator:
first name, last name, e-mail address, and the password typed twice. The login is always admin.
- There is no default password. The step refuses an empty password, two passwords that differ, one shorter
than
[UserSettings] MinPasswordLength(10 as shipped), and, since 6.0.15, a well-known or common password of any length: "This password is well-known or too common, so anyone could guess it. Choose another one." That covers the words of the shared list and their simple variants, such as a common word with digits or!at the end. Choose a long, random password; a password manager can generate one. - If you chose to keep the existing data of a database, the step is skipped and the administrator account stays
as that database has it. A database created from the shipped seed then still has
publish: change it at once.
The kickstarter (kickstart.ini)
The kickstarter runs the same steps without a browser, from kickstart.ini (chapter 6):
[site_admin]
Continue=true
FirstName=Admin
LastName=User
Email=[email protected]
Password=- Empty or missing
Password=(as in the shippedkickstart.ini-distandkickstart.ini--example): the installer generates a random 20-character password (letters and digits without the look-alikes), prints it on the console and writes it tovar/log/initial-admin-passwordwith mode0600, owner-only. - A well-known or common password (the shared list, with its variants) is replaced the same way.
- A password shorter than
[UserSettings] MinPasswordLength(10 as shipped) is replaced the same way, since 6.0.15; before, the kickstarter installed it as it was. These are the rulesexp:installapplies. - Any other value is installed as it is. Leave
Password=empty and use the generated one, or put a long random value there. kickstart.iniholds passwords in clear text: create it with mode0600, never commit it, and remove it after the installation. The run's log,var/log/kickstart.log, masks passwords.
The console install (exp:install)
./console exp:install --apply (or php bin/php/install.php --apply) writes a kickstart.ini from its options and runs the
kickstarter (chapter 7):
- Without
--password, or with--random-password: a random 24-character password. - With
--password=<value>: used when it is at leastMinPasswordLength(10) characters long and not on the shared list; otherwise it is replaced by a random one, and the summary says why. An empty--password=is refused. - A generated password is printed once in the summary at the end and written to
var/log/initial-admin-password(mode0600). The summary tells you to change it and delete that file. A password you gave is shown once and stored nowhere in clear text. var/log/exp-install-<date>.ini, the configuration that was used, masks every password.
In a pipeline, take the password from your secret store (--password="${ADMIN_PASSWORD}"), or let it be generated and
collect it from the summary; never write it into a script or an image.
The list of well-known passwords
Since 6.0.15 one list, expWeakPasswordList (kernel/classes/expweakpasswordlist.php), is used everywhere a password
is set: the setup wizard, the kickstarter, exp:install, the Change password page, registration, the user edit
form, exp:resetuserpassword and the web services. It holds:
- the software's own names and old defaults (
publish,exponential,ezpublish,demo), account names (admin,administrator,root,test), the classics (password,changeme,secret,welcome,letmein,qwerty,123456...); - their simple variants: any case, digits or symbols at the end or the start, spaces,
-or_inside, letter swaps such asp@ssw0rd, the endings-s,-es,-ed,-er,-ers,-ing,-ings, and a word typed twice; - repeated characters and runs of the keyboard, the alphabet or the digits (
aaaaaaaaaa,qwertyuiop,1234567890).
A password is compared as a whole, so a long passphrase that only contains such a word is accepted. Add your own words (the company's name, the site's name) in an override:
[UserSettings]
WeakPasswordList[]=ourcompany
WeakPasswordFile=settings/weak-passwords.txt # one word per line, # for commentsWeakPasswordCheck=disabled switches the check off for the forms; the installers always check. An existing password is
never refused at sign-in: the list applies when a password is set. Details:
the upgrade note.
The shipped database seed: publish
The kernel's clean database, the data every installation starts from, has the administrator account with the
password publish, stored as a bcrypt hash (type 7):
share/db_data.dbakernel/sql/common/cleandata.sqlkernel/sql/sqlite/cleandata.sql
That is the historical default of the software, and it is in every old guide, so it is the first password anyone tries. The installers above always overwrite it when they create the site. It is still the password when:
- a database was created by loading those files by hand (with
exp:ezsqlinsertschema, a database client, or a test setup), without running an installer afterwards; - the setup wizard was told to keep an existing database created that way;
- an old installation (3.x, 4.x, 5.x legacy) was migrated whose administrator never changed it.
Check and change it at once:
./console exp:resetuserpassword --allow-root-user -u admin -g -l 24No installer of Exponential 6 sets any other fixed password. A common word that merely passes the 10-character rule is just as easy to guess: do not use one on a site that can be reached from outside, not even for a test.
Site packages and demo content
The site packages that the installers download (for example the 7x and CJW packages, and the community packages) and
the packages in var/storage/packages/ carry no user accounts: the administrator comes from the database seed and
gets its password from the installer's administrator step. A package that does carry a user account installs it with
the password hash the package contains, so review any package from a third party before installing it.
For developers: the package installer API (eZSiteInstaller::updateContentObjectAttributes()) gives a user object it
creates through an install script a random login and the password publish. No shipped package uses it for users; a
package of your own that does should set a real password afterwards.
A public demonstration site may publish a sign-in for its visitors. Such a site runs with the environment variable
EXP_DEMO_MODE=1 (Demo mode): the installers then accept the published password even though it is
well-known or shorter than MinPasswordLength (an empty one never), and nobody can change or reset an administrator password while the variable is
set. Such a password must never be reused on a real site, and the variable must never be set for one.
After the first sign-in
- Sign in at the administration (
/admin/user/loginwith the default URL access) asadminwith the password above. - Change the password: Change the administrator password.
- Give the account a real, monitored e-mail address, so that Forgot your password? and the "Your password was changed" mail reach you.
- Delete the password file:
rm var/log/initial-admin-password. - Remove
kickstart.iniif you used one. - Follow Account hygiene.
Chapter 10.1 has the same steps in the installation guide.
Account hygiene
- Create a personal administrator account with a login other than
admin(in Users > Administrator users, which carries the Administrator role), one per person. - Turn on two-step sign-in for every administrator.
- Retire
adminas a sign-in: disable it (Configure user account settings > clear Enable user account, after pointing[UserSettings] UserCreatorIDat an enabled administrator), or keep it enabled with a long random password nobody keeps. - Keep a written, tested break-glass procedure: root on the server plus
./console exp:resetuserpassword --allow-root-user.
The steps, and why UserCreatorID matters, are in
Change the administrator password: Account hygiene.
Related pages
- Change the administrator password
- Security hardening
- Chapter 4: Choosing an install method, chapter 5: the setup wizard, chapter 6: the kickstarter, chapter 7: the console install
- Chapter 13: Security hardening for production
Become an Exponential Partner
Partners share their information, provide funding, contribute back and develop the products with us, and that is how Exponential grows. A partner website and dashboard are planned for mid-2027: please become a partner today to speed up our growth rate and land new features faster.