ubuntu install mysql 5.7.25

官网文档

1 安装系统软件

#1.cmake
sudo apt-get install cmake
#2.bison
sudo apt-get install bison
#3.ncurses
sudo apt-get install libncurses5-dev
#4.gcc
linux下的C语言编译工具,mysql源码编译完全由C和C++编写。Ubuntu默认已装。
#5.boost1.59.0----https://www.boost.org/users/history/
cd /opt/apps
wget https://jaist.dl.sourceforge.net/project/boost/boost/1.59.0/boost_1_59_0.tar.gz
tar -zxvf boost_1_59_0.tar.gz -C /usr/local/

2 下载mysql源码

2.1 mysql官网下载mysql-5.7.25.tar.gz
wget https://cdn.mysql.com/Downloads/MySQL-5.7/mysql-5.7.25.tar.gz

2.2 或者从github上下载mysql源码
git clone https://github.com/mysql/mysql-server.git

3 编译MySQL源码

3.1 添加mysql用户

groupadd mysql
useradd -r -g mysql mysql
 or  useradd -r -g mysql -s /bin/bash mysql -d /home/mysql -m

3.2 创建mysql安装程序的目录和数据文件的目录

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

3.3 解压缩mysql 5.7.25源码,并编译

tar -zxvf mysql-5.7.25.tar.gz
cd mysql-5.7.25
cmake \
-DCMAKE_INSTALL_PREFIX=/usr/local/mysql \
-DMYSQL_DATADIR=/data/mysql \
-DSYSCONFDIR=/etc \
-DWITH_INNOBASE_STORAGE_ENGINE=1\
-DWITH_PARTITION_STORAGE_ENGINE=1 \
-DWITH_FEDERATED_STORAGE_ENGINE=1 \
-DWITH_BLACKHOLE_STORAGE_ENGINE=1 \
-DWITH_MYISAM_STORAGE_ENGINE=1 \
-DMYSQL_UNIX_ADDR=/var/lib/mysql/mysql.sock \
-DMYSQL_TCP_PORT=3306 \
-DENABLED_LOCAL_INFILE=1 \
-DEXTRA_CHARSETS=all \
-DDEFAULT_CHARSET=utf8 \
-DDEFAULT_COLLATION=utf8_general_ci \
-DDOWNLOAD_BOOST=1 \
-DWITH_BOOST=/usr/local/boost_1_59_0 \
-DWITH_EMBEDDED_SERVER=1

编译手册

5.7.xx 不含这俩参数
-DMYSQL_USER=mysql \
-DWITH_MEMORY_STORAGE_ENGINE=1 \

编译并安装

[root@szlinux02 mysql-5.7.18]# make -j `grep processor /proc/cpuinfo | wc -l`
[root@szlinux02 mysql-5.7.18]# make install
-j 参数表示根据 CPU 核数指定编译时的线程数,可以加快编译速度。默认为 1 个线程编译。

or

make
make install

4 安装配置MySQL

4.1 初始化mysql数据库

MySQL 5.7.6之前的版本执行这个脚本初始化系统数据库
./bin/mysql_install_db --user=mysql --basedir=/usr/local/mysql --datadir=/data/mysql
5.7.6之后版本初始系统数据库脚本

cd /usr/local/mysql
./bin/mysqld --initialize-insecure --user=mysql --basedir=/usr/local/mysql --datadir=/data/mysql
./bin/mysqld --initialize --user=mysql --basedir=/usr/local/mysql --datadir=/usr/local/mysql/data
./bin/mysqld --initialize --user=mysql --basedir=/usr/local/mysql --datadir=/home/mysql/data  

注意: MySQL之前版本mysql_install_db是在mysql_basedir/script下,MySQL 5.7直接放在了mysql_basedir/bin目录下。
"--initialize"已废弃,生成一个随机密码(~/.mysql_secret)
"--initialize-insecure"不会生成密码
"--datadir"目录下不能有数据文件
[root@szlinux02 mysql]# ./bin/mysql_ssl_rsa_setup

4.2 配置文件

查看cnf配置文件,一般mysql会去这3个地方找配置文件

  • /etc/mysql/my.cnf
  • /etc/my.cnf
  • ~/.my.cnf

从左到右查找,找到就停止

vi /etc/my.cnf

[client]
port=3306
socket=/usr/local/mysql/mysql.sock

[mysqld]
port=3306
socket=/usr/local/mysql/mysql.sock
pid-file=/home/mysql/data/mysql.pid
basedir=/usr/local/mysql
datadir=/home/mysql/data

查看编码SHOW VARIABLES LIKE 'character%'

4.3 配置mysql服务

cp support-files/mysql.server /etc/init.d/mysql 
update-rc.d mysql defaults  #安装服务
update-rc.d mysql start 2  3  4  5 . stop 0  1  6

update-rc.d mysql remove #卸载服务

shell> service mysql start   # 启动mysql服务  
shell> service mysql stop    # 停止mysql服务  
shell> service mysql restart # 重新启动mysql服务

4.4 把安装目录添加到环境变量中

echo "export PATH=$PATH:/usr/local/mysql/bin" >> /etc/profile
source /etc/profile

4.5 本地登录

mysql -uroot -p临时密码
修改密码:

SET PASSWORD = PASSWORD(‘your new password‘);
--ALTER USER ‘root‘@‘localhost‘ PASSWORD EXPIRE NEVER;
flush privileges;

4.6 远程登录:

grant all privileges on *.* to 'root'@'%' identified by 'root' with grant option;
flush privileges;

5. 注意事项

5.1 如果中途编译失败了,需要删除cmake生成的预编译配置参数的缓存文件和make编译后生成的文件,再重新编译。

解决方案:

cd mysql-server-5.7
rm -f CMakeCache.txt
make clean

5.2 ubuntu 16.04 需要安装 build-essential

  CMake Error at CMakeLists.txt:126 (PROJECT):
  No CMAKE_CXX_COMPILER could be found.

  Tell CMake where to find the compiler by setting either the environment
  variable "CXX" or the CMake cache entry CMAKE_CXX_COMPILER to the full path
  to the compiler, or to the compiler name if it is in the PATH.

解决方案:
sudo apt install build-essential

5.3 如果报错

make[2]:\*\*\*[libmysqld/examples/mysql_client_test_embedded] 错误 1  
make[1]: \*\*\*[libmysqld/examples/CMakeFiles/mysql_client_test_embedded.dir/all] 错误 2  

解决方案:
加上-DWITH_EMBEDDED_SERVER=OFF

5.4 启动mysql 无鉴权服务
bin/mysqld_safe --user=mysql --skip-grant-tables --skip-networking & 登录mysql shell,并设置密码:

/usr/local/mysql/bin/mysql -uroot  #密码为空
SQL> update mysql.user set authentication_string=PASSWORD('mysql') where user='root';
SQL> flush privileges;
SQL> quit;

重新登录
/usr/local/mysql/bin/mysql -uroot -pmysql
还需要再设置一次密码,就能够正常访问
mysql> set password=password('root');
mysql> flush privileges;

5.5 skip-grant-tables
1、修改配置文件,一般在 /etc/my.cnf, 在[mysqld]字段下增加skip-grant-tables 字段,用以忽略权限验证;
2、重启MySQL服务器,CentOS 7.0操作命令是:systemctl restart mysqld.service
CentOS 6.5操作命令是:service mysql restart
3、使用mysql -u root -p 登录数据库, 密码直接回车; mysql -uroot -p -h127.0.0.1
4、修改mysql数据库(名称),user表的authentication_string字段,修改命令如下:

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

5、修改配置文件,去掉skip-grant-tables,恢复成原来的样子, 然后重新MySQL服务器。
6、使用第4步设置的密码,登录mysql服务器。
7、通过 set password=password('new_password');命令重新设置密码;

  • qq_43638135
    妲己再美究为妃: 博主没有想过自己接一些私活干吗?我现在还没毕业,但是我也确实听说外挂市场自动化游戏脚本市场挺火热的,并且报酬也很丰厚,但是具体的我也不是很清楚,求解答。 (1个月前 #47楼) 查看回复(2) 举报 回复
    22