DZone
Thanks for visiting DZone today,
Edit Profile
  • Manage Email Subscriptions
  • How to Post to DZone
  • Article Submission Guidelines
Sign Out View Profile
  • Post an Article
  • Manage My Drafts
Newsletter
Log In / Join
Refcards Trend Reports
Events Video Library
Refcards
Trend Reports

Events

View Events Video Library

Related

  • Database Bottlenecks Nobody Talks About: Optimizing SQL Queries Beyond Indexing
  • LangChain With SQL Databases: Natural Language to SQL Queries
  • Stop Writing Dialect-Specific SQL: A Unified Query Builder for Node.js
  • Custom Model Context Protocol (MCP) for NL2SQL: A Rigorous Evaluation Framework on Oracle Database

Trending

  • Part 2: Securing and Scaling Goose-to-Java Agent Traffic With agentgateway
  • Rebuilding Elasticsearch Under Load: Unsafe Watermarks and a Sampling Blind Spot
  • Batching Strategies: Throughput vs Latency in Practice
  • Data Integration Landscape 2026: Event Streaming, API, and Batch in the Era of Agentic AI

Draft This article hasn't been published, so readers can't see it.

In moderation This article is waiting for review, so readers can't see it yet.

Deleted This article has been deleted, so readers can't see it.

  1. DZone
  2. Data Engineering
  3. Databases
  4. Setting Up MySQL Without Root Access

Setting Up MySQL Without Root Access

This article covers how to install and run MySQL as a non-root user in Linux.

By 
Vivek Raman
·
Jun. 24, 16 · Tutorial
Post on X (opens in a new tab) Share on LinkedIn (opens in a new tab)
23.4K Views

Join the DZone community Save articles, join the discussion, and download Refcards and Trend Reports with a free account.

Join for free Already a member? Log in

Many times, we have access to Linux boxes, but do not have access to root login or any sudo privileges. Hence this approach.

We are using the MySQL Community Edition 5.7.13

Setup

We untarred the downloaded mySQL into a src folder. For example : /users/mysql

We will refer to this as $MYSQL_HOME. Please make sure that this is set in the environments:

1. Create $MYSQL_HOME/data directory.

2. Create$MYSQL_HOME/log directory.

Install

Change to  $MYSQL_HOME and create two files — my.ini and my.cnf
my.cnf has the following content:

[mysqld]
user=<userName>

my.ini has the following content:

export BASE_DIR=$MYSQL_HOME
export DATADIR=$BASE_DIR/data

Make sure that the entries are part of your environment (makes it easier to start the daemon).

The following command initializes the mySQL data base and creates the initial set of tables:

./mysqld 
--user=<userName> 
--datadir=$DATADIR 
--basedir=$MYSQL_HOME
--log-error=$MYSQL_HOME/log/mysql.err 
--pid-file=$MYSQL_HOME/mysql.pid 
--socket=$MYSQL_HOME/socket 
--port=3306 
--initialize

The log file will be stored in$MYSQL_HOME/log/mysql.err After the initial install, open the file to check the root password. You should see this line:

A temporary password is generated for root@localhost: XfU(%qmrk7)y

Take a note of this and then change it.

MySQL Daemon

startup.sh

In the $MYSQL_HOME/bin create a startup.sh file. the content of the file is as below:

export BASE=$MYSQL_HOME
$BASE/bin/mysqld 
--user=<userName>
--datadir=$BASE/data 
--basedir=$BASE 
--log-error=$BASE/log/mysql.err
--pid-file=$BASE/mysql.pid 
--socket=$BASE/socket 
--port=3306

Set the executable bit to 755 by executing chmod.

shutdown.sh

The file to shutdown should be placed in /srv/tempo/pgms/mysql/bin. The content is as below: The content should be executable:

export BASE=/srv/tempo/pgms/mysql
$BASE/bin/mysqladmin 
--socket=$BASE/socket shutdown -u root -p

This file should also have the executable bit set.

Starting MySQL

Navigate to $MYSQL_HOME and execute the ./startup.sh.

Stopping MySQL

Navigate to $MYSQL_HOME and execute the ./shutdown.sh.

You will be prompted to enter your password to proceed.

Note: You need a root user account to add this to init.d

Happy working on MySQL as non-root:-)


Note : This article is also published on my personal blog.

MySQL

Published at DZone with permission of Vivek Raman. See the original article here.

Opinions expressed by DZone contributors are their own.

Related

  • Database Bottlenecks Nobody Talks About: Optimizing SQL Queries Beyond Indexing
  • LangChain With SQL Databases: Natural Language to SQL Queries
  • Stop Writing Dialect-Specific SQL: A Unified Query Builder for Node.js
  • Custom Model Context Protocol (MCP) for NL2SQL: A Rigorous Evaluation Framework on Oracle Database

Partner Resources

×

Comments

Loading comments

The comments didn't load

Please try again in a moment.

Likes

Loading

The next likes didn't load. Please try again.

The likes didn't load

Please try again in a moment.

See who liked this

Log in or join DZone for free to see who liked this article.

Log in Join for free
  • RSS
  • X
  • Facebook

ABOUT US

  • About DZone
  • Support and feedback
  • Community research

ADVERTISE

  • Advertise with DZone

CONTRIBUTE ON DZONE

  • Article Submission Guidelines
  • Become a Contributor
  • Core Program
  • Visit the Writers' Zone

LEGAL

  • Terms of Service
  • Privacy Policy

CONTACT US

  • 3343 Perimeter Hill Drive
  • Suite 215
  • Nashville, TN 37211
  • [email protected]

Let's be friends:

  • RSS
  • X
  • Facebook