首先以root身份登录到Linux系统中,然后执行如下命令创建mysql用户账号:

[root@oldboy~]# useradd -s /sbin/nologin -M mysql

1、rpm方式安装MySQL

rpm包的安装方式非常简单,这里以el6平台下的mysql-5.6.34版本为例,首先,要到mysql官网上下载下来mysql安装包:

MySQL-server-5.6.29-1.el6.x86_64.rpm

MySQL-client-5.6.29-1.el6.x86_64.rpm

MySQL-devel-5.6.29-1.el6.x86_64.rpm

MySQL-shared-compat-5.6.29-1.el6.x86_64.rpm

MySQL-shared-5.6.29-1.el6.x86_64.rpm

MySQL-test-5.6.29-1.el6.x86_64.rpm

MySQL-embedded-5.6.29-1.el6.x86_64.rpm

一般来说,其中的MySQL-server-5.6.29-1.el6.x86_64.rpmMySQL-client-5.6.29-1.el6.x86_64.rpm这两个软件包是必须要安装的,至于另外几个软件包,则可视实际需要进行安装,不过一般建议一起安装。

可以把这7个RPM包上传到服务器的目录中,然后执行如下rpm命令进行安装:

·   查看是否存在旧的 mysql 服务(mysql-libs安装更新后卸载,避免依赖报错)

rpm -qa | grep mysql-libs

·   # 如果包存在,按照下列顺序卸载

# 按照顺序卸载

rpm -e mysql-libs-5.1.73-7.el6.x86_64 --nodeps

rpm -e MySQL-shared-advanced

rpm -e MySQL-test-advanced

rpm -e MySQL-embedded-advanced

rpm -e MySQL-server-advanced

rpm -e MySQL-devel-advanced

rpm -e MySQL-client-advanced


rpm -ivh MySQL-client-5.6.29-1.el6.x86_64.rpm

rpm -ivh MySQL-devel-5.6.29-1.el6.x86_64.rpm

rpm -ivh MySQL-shared-5.6.29-1.el6.x86_64.rpm

rpm -ivh MySQL-server-5.6.29-1.el6.x86_64.rpm

rpm -ivh MySQL-embedded-5.6.29-1.el6.x86_64.rpm

rpm -ivh MySQL-test-5.6.29-1.el6.x86_64.rpm

MySQL的默认安装位置

/var/lib/mysql/               #数据库目录

/usr/share/mysql              #配置文件目录

/usr/bin                     #相关命令目录

/etc/init.d/mysql              #启动脚本


在采用rpm包安装方式时,必须要官方或第三方提供了现成的rpm软件包,否则是无法使用该方式安装的。另外,和直接采用yum的安装方式相比,rpm包的安装方式往往可以选择更新的版本,但是rpm包安装也有自身的问题,例如,无法满足定制化安装,比如,不能进行编译参数、路径等的更改。

*安装tcmalloc

# s1

wget http://10.0.42.1:4201/soft/libunwind-1.1.tar.gz

tar zxvf libunwind-1.1.tar.gz

cd libunwind-1.1

CFLAGS=-fPIC ./configure  

make CFLAGS=-fPIC  

make CFLAGS=-fPIC install

/sbin/ldconfig

cd ..

# s2

wget http://10.0.42.1:4201/soft/gperftools-2.2.1.tar.gz

tar zxvf gperftools-2.2.1.tar.gz

cd gperftools-2.2.1

./configure

make

make install  

/sbin/ldconfig

cd ..

# s3

cat /etc/ld.so.conf.d/local_lib.conf

echo "/usr/local/lib" > /etc/ld.so.conf.d/local_lib.conf

/sbin/ldconfig


创建数据库配置文件my.cnf

#修改数据库server-id,每台机器必须不同


mv -f my.cnf /etc/

rm -f /usr/my*.cnf


* 初始化应用数据目录

mkdir -p /u02/mysql

rm -rf /u02/mysql/*

rm -rf /var/lib/mysql/*

mysql_install_db --defaults-file=/etc/my.cnf


chown -R mysql.mysql /u02/mysql

* 初始化配置

cat /root/.mysql_secret

7pkbuyfM1zYsqpDL

service mysql start


mysql -p

   GRANT ALL PRIVILEGES ON *.* TO 'ggs'@'%' IDENTIFIED BY '123456' WITH GRANT OPTION;

   FLUSH PRIVILEGES;

   exit;


* 配置自动启动

chkconfig mysql on



2、采用cmake方式编译安装MySQL

考虑到MySQL5.4.xx及以后系列产品的特殊性,其编译方式和早期的第一条产品线的有所不同,这里采用cmakegmake方式的编译安装。即./cmake;make;make install,生产场景的具体命令及参数为:

yum install ncurses-devel libaio-devel -y

rpm -qa ncurses-devel libaio-devel


yum install cmake -y

rpm -qa cmake


useradd -s /sbin/nologin -M mysql


tar zxf mysql-5.6.37.tar.gz

cd mysql-5.6.37

cmake . -DCMAKE_INSTALL_PREFIX=/u02/mysql-5.6.37 \

-DMYSQL_DATADIR=/u02/mysql-5.6.37/data \

-DMYSQL_UNIX_ADDR=/u02/mysql-5.6.37/tmp/mysql.sock \

-DDEFAULT_CHARSET=utf8 \

-DDEFAULT_COLLATION=utf8_general_ci \

-DEXTRA_CHARSETS=gbk,gb2312,utf8,ascii \

-DWITH_EXTRA_CHARSETS=all \

-DWITH_INNOBASE_STORAGE_ENGINE=1 \

-DWITH_FEDERATED_STORAGE_ENGINE=1 \

-DWITH_BLACKHOLE_STORAGE_ENGINE=1 \

-DWITHOUT_EXAMPLE_STORAGE_ENGINE=1 \

-DWITH_ZLIB=bundled \

-DWITH_SSL=bundled \

-DENABLED_LOCAL_INFILE=1 \

-DWITH_EMBEDDED_SERVER=1 \

-DENABLE_DOWNLOADS=1 \

-DWITH_DEBUG=0

##注意:\前面一定要有空格


make

make install

ln -s /u02/mysql-5.6.37/ /u02/mysql


创建数据库配置文件my.cnf

mv /etc/my.cnf /etc/my.cnf.bak

cp support-files/my-default.cnf /u02/mysql-5.6.34/my.cnf ##此步可以省略,my.cnf会在初始化时重新生成,,若不省略,则初始化时会生成my-new.cnf文件,my.cnf和my-new.cnf除了注释以外是一致的

chown -R mysql.mysql /u02/mysql



初始化MySQL数据库文件

/u02/mysql/scripts/mysql_install_db --basedir=/u02/mysql --datadir=/u02/mysql/data --user=mysql

#<==两个OK是初始化成功的标志。

配置并启动MySQL数据库

cp /srv/mysql-5.6.37/support-files/mysql.server /etc/init.d/mysqld

chmod 700 /etc/init.d/mysqld

2)启动MySQL数据库

mkdir /u02/mysql-5.6.37/tmp

chown -R mysql.mysql /u02/mysql*


/etc/init.d/mysqld start

chkconfig --add mysqld

chkconfig --list mysqld


将MySQL相关命令加入全局路径

ls /u02/mysql/bin/mysql

echo 'export PATH=/u02/mysql/bin:$PATH' >>/etc/profile

tail -1 /etc/profile

source /etc/profile


登录MySQL测试

mysql

exit

mysqladmin -u root password '123456'


mysql -p123456


MySQL排错:

1、cmake编译安装时\前面漏加了空格,一直很顺利,直到mysql启动时:

[root@linux-mysql02 data]# /etc/init.d/mysqld start    

Starting MySQL.Logging to '/u02/mysql-5.6.37/data-DMYSQL_UNIX_ADDR=/u02/mysql-5.6.37/tmp/mysql.sock-DDEFAULT_CHARSET=utf8-DDEFAULT_COLLATION=utf8_general_ci-DWITH_EXTRA_CHARSETS=all-DWITH_INNOBASE_STORAGE_ENGINE=1-DWITH_FEDERATED_STORAGE_ENGINE=1-DWITH_BLACKHOLE_STORAGE_ENGINE=1-DWITHOUT_EXAMPLE_STORAGE_ENGINE=1-DWITH_ZLIB=bundled-DWITH_SSL=bundled-DENABLED_LOCAL_INFILE=1-DWITH_EMBEDDED_SERVER=1-DENABLE_DOWNLOADS=1-DWITH_DEBUG=0/linux-mysql02.err'.

 ERROR! The server quit without updating PID file (/u02/mysql-5.6.37/data-DMYSQL_UNIX_ADDR=/u02/mysql-5.6.37/tmp/mysql.sock-DDEFAULT_CHARSET=utf8-DDEFAULT_COLLATION=utf8_general_ci-DWITH_EXTRA_CHARSETS=all-DWITH_INNOBASE_STORAGE_ENGINE=1-DWITH_FEDERATED_STORAGE_ENGINE=1-DWITH_BLACKHOLE_STORAGE_ENGINE=1-DWITHOUT_EXAMPLE_STORAGE_ENGINE=1-DWITH_ZLIB=bundled-DWITH_SSL=bundled-DENABLED_LOCAL_INFILE=1-DWITH_EMBEDDED_SERVER=1-DENABLE_DOWNLOADS=1-DWITH_DEBUG=0/linux-mysql02.pid).

报错!!!

解决方法:

[root@linux-mysql02 mysql-5.6.37]# vim /etc/init.d/mysqld 

.... 

datadir=/u02/mysql-5.6.37/data-DMYSQL_UNIX_ADDR=/u02/mysql-5.6.37/tmp/mysql.sock-DDEFAULT_CHARSET=utf8-DDEFAULT_COLLATION=utf8_general_ci-DWITH_EXTRA_CHARSETS=all-DWITH_INNOBASE_STORAGE_ENGINE=1-DWITH_FEDERATED_STORAGE_ENGINE=1-DWITH_BLACKHOLE_STORAGE_ENGINE=1-DWITHOUT_EXAMPLE_STORAGE_E

NGINE=1-DWITH_ZLIB=bundled-DWITH_SSL=bundled-DENABLED_LOCAL_INFILE=1-DWITH_EMBEDDED_SERVER=1-DENABLE_DOWNLOADS=1-DWITH_DEBUG=0

把上面的内容注释掉,并在上面内容的下一行加入   

 datadir=/u02/mysql-5.6.37/data


原因:此时mysql默认是调用编译自动生成的一些文件,/u02/mysql-5.6.37/support-files/mysql.server和/u02/mysql-5.6.37/my.cnf,所以解决方法一是修改启动文件mysql.server,如上,而是修改my.cnf,自定义一些参数。。

2、在启动mysql前没有新建cmake编译时指定的/u02/mysql-5.6.37/tmp/目录,导致mysql.sock找不到目录报错:

[root@linux-mysql01 mysql-5.6.37]# /etc/init.d/mysqld start

Starting MySQL.Logging to '/u02/mysql-5.6.37/data/linux-mysql01.err'.

170808 21:14:04 mysqld_safe Directory '/u02/mysql-5.6.37/tmp' for UNIX socket file don't exists.

 ERROR! The server quit without updating PID file (/u02/mysql-5.6.37/data/linux-mysql01.pid).

解决方法:在启动时新建/u02/mysql-5.6.37/tmp目录,并授权mysql

mkdir /u02/mysql-5.6.37/tmp

chown -R mysql.mysql /u02/mysql*


3、采用二进制方式免编译安装MySQL

   采用二进制免编译方式安装MySQL的方法和yum/rpm包安装方式类似,适合各类MySQL产品系列,不需要复杂的编译设置及编译时间等待,直接解压下载的软件包,就相当于编译方式的make install步骤完成了,然后只要进行初始化数据库的操作,即可完成并启动

1、下载:

wget -q http://mirrors.sohu.com/mysql/MySQL-5.6/mysql-5.6.37-linux-glibc2.5-x86_64.tar.gz

2、安装依赖包

useradd -s /sbin/nologin -M mysql

id mysql

yum install ncurses-devel libaio-devel -y

3、解压

tar xf mysql-5.6.37-linux-glibc2.5-x86_64.tar.gz 
mkdir -p /u02
mv mysql-5.6.37-linux-glibc2.5-x86_64 /u02/mysql-5.6.37
useradd -s /sbin/nologin -M mysql
chown -R mysql.mysql /u02/mysql-5.6.37/
cd /u02/mysql-5.6.37/


4、初始化数据库

cp support-files/my-default.cnf /etc/my.cnf
./scripts/mysql_install_db --basedir=/u02/mysql-5.6.37/ --datadir=/u02/mysql-5.6.37/data/ --user=mysql
sed -i 's#/usr/local/mysql#/u02/mysql-5.6.37#g' /u02/mysql-5.6.37/bin/mysqld_safe

5、启动登录

/u02/mysql-5.6.37//bin/mysqld_safe &
lsof -i :3306
PATH="/u02/mysql-5.6.37/bin/:$PATH"

6、登录验证
 mysql