安装方式
Install for Ubuntu (apt-get)
1.执行命令:
sudo apt-get install mysql-server -y
sudo apt-get install mysql-client -y
sudo apt-get install libmysqlclient-dev -y完成之后可以使用
sudo netstat -tap | grep mysql命令来检查是否安装成功.
2.执行命令:
- 它的配置文件保存在
/etc/my.cnf如果找不到, 使用
mysql --help查看关于MYSQL对应 配置文件my.cnf
初始化其二
前置条件 建立了 mysql 用户
mkdir -p data/log data/data data/run
bin/mysqld --initialize --basedir=/usr/local/mysql_5.7 --datadir=/usr/local/mysql_5.7/data/data --user=mysql以上会生成root 随机密码
2019-08-12T08:00:27.362693Z 1 [Note] A temporary password is generated for root@localhost: X,%;kYzJS0yv>
配置路径 vim /etc/my.cnf
启动MySQL服务; cp support-files/mysql.server /etc/init.d/mysql
chkconfig mysql on service mysql start
RPM 方式
参考笔记N_Linux.md: MySQL→ rpm压缩包方式
启动/停止
1.启动
- 到
./bin目录下执行:mysqld --console
mysqld --defaults-file=../conf/my.ini --console//非默认路径, 指定配置文件
默认不能使用root启动 mysqld —user=root —console
2.停止
- 到
./bin目录下执行:mysqladmin -u root -p shutdown
注册为服务
3.注册为服务
- 到
./bin目录下执行:mysqld -install(显示: Service successfully installed. 则注册服务成功; ) - 启动
net start mysql{ 注: mysql为服务名, 可根据服务管理列表查看MySQL服务名 }
删除已经初始化的服务, 命令:
mysqld --remove或sc delete mysql
Installation for Windowns
可参考 官方文档: https://dev.mysql.com/doc/refman/5.7/en/windows-install-archive.html
(貌似linux下也适用, 未测试)
下载
-
下载有点不好找, 进入官方下载页
Downloads→Community→ 找到MySQL Community Server 5.7 »or https://dev.mysql.com/downloads/mysql/ -
下载后解压到
mysql-5.7.21-winx64.zip自定义目录, 例如:D:\MySql_Server_5.7.21
附上5.7的下载链接: https://dev.mysql.com/downloads/mysql/5.7.html#downloads
5.7 安装版 需要安装
.net 4.52
创建操作文件
my.ini(Creating an Option File)
新建配置文件my.ini
[mysqld]
设置mysql的安装目录
basedir=F:\\software\\mysql-5.7.22-winx64
设置mysql数据库的数据的存放目录, 必须是data, 或者是\\xxx-data
datadir=F:\\software\\mysql-5.7.22-winx64\\data
设置mysql服务器的字符集, 默认编码
default-character-set=utf8
[WinMySQLAdmin]
指定mysql服务启动启动的文件
Server=F:\\software\\mysql-5.7.22-winx64\\bin\\mysqld.exe
user=root - 关于类型(看看就好了) Selecting a MySQL Server Type
手动初始化
- 手动初始化 官方文档
-
到
./bin目录下执行:mysqld --defaults-file=../my.ini --initialize -
之后它会为root用户, 生成一个随机密码, 记录在日志文件中, 一般在
数据库目录/以 *.err后缀的文件.- 例
DESKTOP-BG95TVK.err
- 例
-
初始化后,必须登陆更改root密码, 才能使用,(使用root登陆后)
ALTER USER 'root'@'localhost' IDENTIFIED BY 'new_password';
-
踩坑:
- 配置文件路径不能有空格, 否则会在空格截止
- 数据目录如果存在必须为空
- 如果日志文件出现无法设置
default-character-set=utf8,在my.ini以character_set_server=utf8替换之
注册为服务
到./bin目录下执行:
mysqld -install [servername]
mysqld -install mysql
显示: Service successfully installed. 则注册服务成功
- 启动
net start [servername]
net start mysql
删除已经初始化的服务, 命令: mysqld —remove 或 sc delete mysql
从源码编译安装 (华为泰山ARM)
参考官页文档: > DOCUMENTATION >MySQL 5.7 Reference Manual / Installing and Upgrading MySQL / Installing MySQL from Source Installing MySQL from Source
下载源码
源码安装必要的条件
Source Installation Prerequisites
基本编译软件
gcc make ..等
yum install -y cmake make gcc gcc-c++ wget ncurses-devel cmake make perl ncurses-devel openssl-devel bison-devel libaio libaio-devel
Boost C++ libraries
Boost 库麻烦一点
- 执行流程
## 建立目录
mkdir /usr/local/boost1.7
cd /usr/local/boost1.7
## 下载
wget https://dl.bintray.com/boostorg/release/1.70.0/source/boost_1_70_0.zip
## 解压
unzip boost_1_70_0.zip
## 到目录
cd boost_1_70_0.zip
#执行 --prefix 指定安装目录
./bootstrap.sh --prefix=/usr/local/include/boost
./b2 --prefix=/usr/local/include/boost install
## cd到安装目录应该有 include 和 lib 文件夹了.
cd /usr/local/include/boost
./bootstrap.sh是用来检查安装环境的, 如果报错了, 看一下是缺少了什么, 安装一下即可;./b2是上一步成功后生成的, 使用它来进行构建boost库;
如果为了引用方便将目录加到环境变量中
在/etc/profile文件中添加
export CPLUS_INCLUDE_PATH=/usr/local/include/boost/include:$CPLUS_INCLUDE_PATH
export LIBRARY_PATH=/usr/local/include/boost/lib:$LIBRARY_PATH
export LD_LIBRARY_PATH=/usr/local/include/boost/lib:$LD_LIBRARY_PATH
然而.. 并不需要编译Boost库, 我!
编译命令概览
Installing MySQL Using a Standard Source Distribution
摘自文档片段
## Beginning of source-build specific instructions 开始规定源码信息
shell> tar zxvf mysql-VERSION.tar.gz
shell> cd mysql-VERSION
shell> mkdir bld ## 新建进入目录
shell> cd bld
shell> cmake .. #cmake 这里需要添加 DWITH_BOOST 库文件位置, 以及一些选项, 见下cmake完整命令
## cd .. 到目录make, 不明白文档 新建bld目录的意义...
shell> make ## make 编译
shell> make install ## make install 安装
## End of source-build specific instructionscmake完整命令:
cmake ..
-DCMAKE_INSTALL_PREFIX=/usr/local/mysql_5.7\ ## 安装目录
## -DMYSQL_UNIX_ADDR=/usr/local/mysql/mysql.sock\ #mysql socket文件位置? 后面这个一直保报错, 默认即可了,/tmp/mysql.sock
-DDEFAULT_CHARSET=utf8mb4\ ## 默认字符集..
-DDEFAULT_COLLATION=utf8mb4_general_ci\
-DWITH_MYISAM_STORAGE_ENGINE=1 \
-DWITH_INNOBASE_STORAGE_ENGINE=1 \
-DWITH_MEMORY_STORAGE_ENGINE=1 \
-DWITH_READLINE=1 -DENABLED_LOCAL_INFILE=1 \
-DMYSQL_DATADIR=/usr/local/mysql/data \
-DMYSQL_USER=mysql \
-DMYSQL_TCP_PORT=6603 \
-DWITHOUT_PARTITION_STORAGE_ENGINE=1 \
-DWITH_BOOST=/usr/local/boost\ ## 指定Boost库位置MMP的不需要编译Boost库…
初始化
专有用户
为了安全性, 给mysql数据库创建专有用户, 该用户只能访问mysql目录, 不能访问系统其它目录, 禁shell
## Preconfiguration setup 创建用户组 用户(禁shell)
shell> groupadd mysql
shell> useradd -r -g mysql -s /bin/false mysql
chown -R mysql:mysql /usr/local/mysql_5.7 ## 给目录所有者初始化
初始化 基本库数据, 比如mysql库 , mysql.user用户表
./bin/mysqld --initialize --basedir=/usr/local/mysql_5.7 --datadir=/data/data --user=mysql
sudo mysqld_safe --basedir=/home/pi/mysql_5.7 --datadir=/home/pi/mysql_5.7/data --user=root
配置文件 my.cnf
https://dev.mysql.com/doc/refman/8.0/en/option-files.html
默认情况下mysql会用/etc/my.cnf 作为配置文件
vi /etc/my.cnf
[mysqld]
datadir= /usr/local/mysql_5.7/data/data
port=3306
# bind-address = 0.0.0.0
max_connections = 100
max_allowed_packet = 50M
[mysqld_safe]
log-error=/usr/local/data/log/mysql.log
pid-file=/usr/local/data/run/mysql.pid
!includedir /etc/my.cnf.d
踩坑指南:
mysql.log,mysql.pid这些文件需要自己手动创建, 不然启动报错The server quit without updating PID file
vi /usr/local/data/log/mysql.log ## :wq退出
chown mysql:mysql /usr/local/data/log/mysql.log ## 更改拥有者
启动
/bin./mysqld_safe --user=mysql &
/bin./mysqladmin -u root -p shutdown //关闭
mysqladmin shutdown
作为服务开机启动
-
复制
./support-files/mysql.server到/etc/init.d/cp support-files/mysql.server /etc/init.d/mysql -
编辑
vi /etc/init.d/mysql
将目录参数填上
basedir=/usr/local/mysql/
datadir=/usr/local/mysql/data/-
授权:
chmod +x /etc/init.d/mysql -
设为开机启动:
chkconfig --add mysql
//重启服务:
service mysql restart
//停止服务:
service mysql stop
//启动服务:
service mysql start
//查看服务:
service mysql status参考博客 MySQL5.7编译和测试_数据库_鲲鹏软件-华为云
踩坑指南
在 Linux 下 无限重启?
表现为pid不断变化
ps -ef |grep mysql
/usr/sbin/mysqld —daemonize —pid-file=/var/run/mysqld/mysqld.pid
注意参数 后面的pid文件, 其实是以mysql 用户运行, 但是它没有数据目录的权限 so… service mysql stop —手动关闭mysql
强制root 用户运行
mysqld start --user root
mysqld restart --user root
mysqld stop --user rootDDL 非主键条件错误
MySql默认运行在safe-updates模式下, 该模式会导致非主键条件下无法执行update或者delete命令,
执行命令
SET SQL_SAFE_UPDATES = 0; //修改下数据库模式
SET SQL_SAFE_UPDATES = 1; //记得改回来
忘记 root密码?
cd 到 ./bin 目录
执行: mysqld -nt --skip-grant-tables
以管理员身份重新启动一个cmd命令窗口:
mysql -uroot -P 3306 -p, 无需输入密码 Enter进入数据库;
无密码访问MySQL
无密码MySQL访问方法
在cmd中的mysql\bin文件夹下执行下面语句, 用于跳过用户验证访问数据库; 当然, 如果本机有正在运行的mysql的服务需要先停掉;
$ mysqld --skip-grant-tables
另外一个cmd, 同样在mysql\bin文件夹下执行mysql访问数据库;
$ mysql
$ use mysql;
database changed如果要更改现有用户的密码, 例如root@localhost;
mysql>UPDATE user SET Password=PASSWORD('123') WHERE User='root' AND Host='localhost';