Giter VIP home page Giter VIP logo

run-private-mysql-server-as-normal-user's Introduction

run-private-MySQL-server-as-normal-user

The following is my personal experience, use at one's own risk.

To run a private instance of mysqld MySQL server as a normal user sometimes may needed. Here is what I did on Centos 7.

There are several ways to do so. One way is to use the MySQL package insatlled by your sysadmin, while create the database settings and files in your own HOME direcory; the other way is to install your own copy of MySQL in your HOME direcory and configure it. You can downlwd the rpm files, and install them into your folders; or you can download the source files and compile/install it.

(1) Download and install MySQL server and client.

What I did is to download the rpm files, from http://mirror.centos.org/centos/7/os/x86_64/Packages/ . Here one should make sure the pre-compiled version is compatible with the local OS. The 3 files are:

mariadb-5.5.65-1.el7.x86_64.rpm

mariadb-libs-5.5.65-1.el7.x86_64.rpm

mariadb-server-5.5.65-1.el7.x86_64.rpm

After downlowd, expand the files and save the pre-compiled files inside them into your HOME directory:

[feng@server1 ~]$ mkdir /home/feng/mysql

[feng@server1 ~]$ cd /home/feng/mysql

[feng@server1 ~]$ rpm2cpio ~/Download/mariadb-server-5.5.65-1.el7.x86_64.rpm | cpio -idmv

Do the same to the other 2 rpm files. After this is done, you will see the pre-compiled files in the automatically generated sub-folders:

[feng@server1 ~]$ ls /home/feng/mysql

drwxrwxr-x 5 feng feng 95 Oct 12 11:24 etc

drwxrwxr-x 7 feng feng 93 Oct 12 11:24 usr

drwxrwxr-x 5 feng feng 55 Oct 12 11:24 var

Now, I have my own pre-compiled MySQL server and client ready to be run. Before to start to run, I need to do some configurations.

First, set the runtime environment to let the OS to know where my MySQL files are. I add 3 lines below into my .bashrc file.

export LD_LIBRARY_PATH=/home/feng/mysql/usr/lib64:$LD_LIBRARY_PATH

export PATH=/home/feng/mysql/usr/libexec:/home/feng/mysql/usr/bin:/home/feng/mysql/usr/sbin:$PATH

export PHP_INI_SCAN_DIR=/home/feng/mysql/etc/php.d

Source the updated .bashrc file to update, and test if it is alright:

[feng@server1 ~]$ which mysqld_safe

~/mysql/usr/bin/mysqld_safe

It is good, the OS now knows where my private MySQL is.

(2) Configure MySQL server and client.

Now to configure the MySQL server. There are many ways to do so, I will focus on the easiest one as below:

Edit my private /home/feng/.my.cnf file, add following lines:

[client]

port=3306

socket=/home/feng/mysql/var/lib/mysql/mysql.sock

[mysqld]

port=3306

datadir=/home/feng/mysql/var/lib/mysql

socket=/home/feng/mysql/var/lib/mysql/mysql.sock

symbolic-links=0

user=feng

basedir=/home/feng/mysql/usr

plugin-dir=/home/feng/mysql/usr/lib64/mysql/plugin

[mysqld_safe]

log-error=/home/feng/mysql/var/log/mariadb/mariadb-feng.log

pid-file=/home/feng/mysql/var/run/mariadb/mariadb.pid

!includedir /home/feng/mysql/etc/my.cnf.d

I can also edit my private /home/feng/mysql/etc/my.cnf file, add/update the above lines into it. While everytime when I need to run MySQL, I have to explicitly direct MySQL to use the configuration file by mysqld_safe --defaults-file=/home/feng/mysql/etc/my.cnf. And also when I try to run MySQL client, I have to run "mysql -u feng -p --socket=/home/feng/mysql/var/lib/mysql/mysql.sock". MySQL seems by default search /etc/my.cnf and .my.cnf, and will search the --defaults-file if it is explicitly set.

Beside, the /home/feng/mysql/var/run/mariadb/ needs to be made, since it is not generated by default. Using command mkdir -p /home/feng/mysql/var/run/mariadb/ should work.

Before to start to run the MySQL server, one might need to run the following command to initialize the MySQL system databases;

mysql_install_db --no-defaults --basedir=/home/feng/usr --datadir=/home/feng/var/lib/mysql

(3) Now I can run my own MySQL server simply by issuing command:

mysqld_safe &

Finnaly, if the OS has SELinux and Firewall enabled, the port for MySQL may need to be set and enabled there.

run-private-mysql-server-as-normal-user's People

Contributors

prod-feng avatar

Stargazers

 avatar  avatar

Watchers

 avatar  avatar

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    ๐Ÿ–– Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. ๐Ÿ“Š๐Ÿ“ˆ๐ŸŽ‰

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google โค๏ธ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.