MySQL安装的N种方式

一、二进制包安装

1.)下载:在官网的下载页面下的服务器操作系统选择  Linux- Generic ; 进制分发版的格式是:mysql-<版本>-<OS>-tar.gz 

2.)解压并更名到指定目录,并在其下创建data、log并赋予相关目录mysql的用户权限

3.)初始化MySQL(警告提示可忽略):bin/mysqld --initialize --user=mysql --basedir=/opt/mysql --datadir=/opt/mysql/data/

  [注意]打印信息root@localhost后会有生成临时密码的提示。

4.)MySQL使用ssl连接:bin/mysql_ssl_rsa_setup --datadir=/opt/mysql/data/

5.)添加mysql启动脚本到本地系统服务:cp support-files/mysql.server /etc/init.d/mysql.server

6.)创建/etc/my.cnf文件,并写入:

[mysqld]
basedir=/opt/mysql
datadir=/opt/mysql/data
socket=/opt/mysql.sock   #需要mysql用户权限
user=mysql
log_error=/opt/mysql/log/mysql.log       #手动在log下面创建文件并赋予权限。

7、启动方式:
1.service mysql.server start
2.bin/mysqld_safe --user=mysql &

8、将MySQL的二进制执行文件目录添加到环境变量:
      ln -s /opt/mysql/bin/mysql /usr/bin/

9.更改密码,配置文件中添加“skip-grant-tables”

mysql> update mysql.user set authentication_string=password('123456') where user='root' and Host = 'localhost';
mysql> flush privileges;.

 

 

二、RPM安装

1.、检测系统是有缺省MySQL的相关组件:rpm -qa|grep -E 'mariadb|mysql',有则rpm -e --nodeps卸载,否则安装报类似如下错误:file /usr/share/mysql/charsets/swe7.xml from install of mysql-community-common.x86_64


2、下载相关依赖包,并按顺序安装:
  mysql-community-common
  mysql-community-libs
  mysql-community-client
  mysql-community-server

 

3、启动MySQL:service mysqld start     OR        systemctl start mysqld

 

三、yum安装

官方epel源:(默认是官网当前发布的版本) https://dev.mysql.com/downloads/repo/yum/

1.)安装步骤

rpm -Uvh https://dev.mysql.com/get/mysql57-community-release-el7-11.noarch.rpm

 yum   -y   install     mysql    mysql-server

根据配置文件得知数据文件的默认安装路劲是在/var/lib/mysql 下,可以迁移到其他目录:

1.)cp   -a   /var/lib/mysql    /usr/local/

2.)配置文件中将缺省的参数更改为下例:

datadir=/usr/local/mysql
socket=/usr/local/mysql/mysql.sock

#可以不加下列参数,否则登录时需要“-S”手动指定套接字的存在
[client]
socket=/usr/local/mysql/mysql.sock

3.)

切记一定要关闭Selinux,否则无法启动mysql。

数据路劲切换完成后建议将原有的目录名称更改,防止系统中其他mysql配置文件调用原有文件。

 

 

四、源码安装

1.)检测系统自带的mysql-libs包,并进行卸载

2.)由于MySQL源码安装:从mysql5.5以后是通过cmake来编译的安装的,但cmake要依赖ncurses,所以你懂的,有需要依赖就装给它!

下载如下插件并编译安装:

  ncurses:ftp://ftp.gnu.org/gnu/ncurses/ncurses-5.8.tar.gz

  cmake:https://cmake.org/files/v3.0/cmake-3.0.2.tar.gz

  ./configure           make ; make install

3.)编译安装Mysql

cmake -DCMAKE_INSTALL_PREFIX=/usr/local/MySQL/ -DMySQL_DATADIR=/usr/local/mysql/data -DSYSCONFDIR=/etc -DWITH_MYISAM_STORAGE_ENGINE=1 -DWITH_INNOBASE_STORAGE_ENGINE=1 -DWITH_MEMORY_STORAGE_ENGINE=1 -DWITH_READLINE=1 -DMySQL_UNIX_ADDR=/tmp/MySQL.sock -DMySQL_TCP_PORT=3306 -DENABLED_LOCAL_INFILE=1 -DWITH_PARTITION_STORAGE_ENGINE=1 -DEXTRA_CHARSETS=all -DDEFAULT_CHARSET=utf8 -DDEFAULT_COLLATION=utf8_general_ci

make && make install

#######编译参数详解:

# -DCMAKE_INSTALL_PREFIX=/usr/local/mysql \ #安装路径
# -DMYSQL_DATADIR=/usr/local/mysql/data \ #数据文件存放位置
# -DSYSCONFDIR=/etc \ #my.cnf路径
# -DWITH_MYISAM_STORAGE_ENGINE=1 \ #支持MyIASM引擎
# -DWITH_INNOBASE_STORAGE_ENGINE=1 \ #支持InnoDB引擎
# -DWITH_MEMORY_STORAGE_ENGINE=1 \ #支持Memory引擎
# -DWITH_READLINE=1 \ #快捷键功能(我没用过)
# -DMYSQL_UNIX_ADDR=/tmp/mysqld.sock \ #连接数据库socket路径
# -DMYSQL_TCP_PORT=3306 \ #端口
# -DENABLED_LOCAL_INFILE=1 \ #允许从本地导入数据
# -DWITH_PARTITION_STORAGE_ENGINE=1 \ #安装支持数据库分区
# -DEXTRA_CHARSETS=all \ #安装所有的字符集
# -DDEFAULT_CHARSET=utf8 \ #默认字符

 

4.)安装完成后续的操作:

useradd mysql

chown -R mysql.mysql /usr/local/mysql
chown -R mysql.mysql /mysql/data/

 

5.)初始化数据库(初始完之后会在数据文件中生成一些文件)

cd /usr/local/MySQL/scripts

./mysql_install_db    --user=mysql    --basedir=/usr/local/MySQL  --datadir=/usr/local/MySQL/data

 

6.)copy主配置文件到/etc/。
cp /usr/local/MySQL/support-files/my-default.cnf     /etc/my.cnf
注意:老版本名称是my-medium.cnf3

7.)将mysql添加到系统服务:
cp /usr/local/MySQL/support-files/mysql.server     /etc/init.d/mysqld

注意事项:

重新编译时,需要清除旧的对象文件和缓存信息。

#make clean

#rm -f CMakeCache.txt

#rm -rf /etc/my.cnf

 

 

五、ERROR案例:

1.)登录报错:ERROR 2002 (HY000): Can't connect to local MySQL server through socket '/tmp/mysql.sock'

解决方案:

临时::登录时加-S sock文件绝对路劲
最终:将配置文件中的[client]添加socket字段与[mysqld]socket相同。或则两个配置项都不写socket字段(可能不行)

排错思路:检测配置文件中指定的socket字段路劲权限是否正常。MySQL编译安装时会要求指定socket的绝对路劲,就算在配置文件中的mysqld与client中不写socket字段都没关系,而MySQL二进制文件是官方编译后的软件,其编译参数都是默认的,即在mysqld配置段指定了socket,而client不指定则会出现冲突。

 

 

2.)执行任意操作时提示:ERROR 1820 (HY000): You must reset your password using ALTER USER statement before executing this statement.

解决方案:

更改密码:SET PASSWORD = PASSWORD('123456'); 注意配置文件中添加skip则不支持执行该命令; 且要求密码规则如此:用大写字母+数字+特殊字符长度 8 位以上混合,否则提示:ERROR 1819 (HY000): Your password does not satisfy the current policy requirements

如果只想设置简单密码需要修改两个全局参数:
mysql> set global validate_password_policy=0;
mysql> set global validate_password_length=1;

 

posted @ 2017-11-03 10:43  厉害了我  阅读(489)  评论(0编辑  收藏  举报