MySQL安装
1、windows下安装mysql-5.5.29-win32.zip:
1、解压缩,比如到d:\,为了方便,改一下路径,比如mysql
2、开始/运行,输入cmd,回车进入命令行
d:
cd mysql\bin
安装mysql服务
mysqld.exe --install (默认服务名称是mysql或者mysqld.exe --install "mysql5"修改服务名称)
删除mysql服务
mysqld.exe --remove(或者mysqld.exe --remove "mysql5")
3、ini参数配置文件d:\mysql\
复制mysql-small.ini为my.ini
4、启动停止服务
a)在命令行启动/停止
net start mysql
net stop mysql
b)或者去控制面板找服务启动
c)或者开始/运行输入services.msc,确定后,找到mysql启动
问题:mysql 安装出现 Install/Remove of the Service Denied!错误
原来只在进入 C:\Window 找到CMD.EXE 右键选择 以管理员身份 进行,再进入相应目录执行命令,一切就OVER 了。
问题:Mysql net start mysql启动,提示发生系统错误 5 拒绝访问
为什么会出现这个问题呢?经过一番思考找到原因了,是因为当前用户的操作权限太低了,出了问题
出错问题截屏如下:
解决问题方法如下:
在dos下运行net start mysql 不能启动mysql!提示发生系统错误 5;拒绝访问!切换到管理员模式就可以启动了。所以我们要以管理员身份来运行cmd程序来启动mysql。
那么如何用管理员身份来运行cmd程序呢?
1.在开始菜单的搜索框张收入cmd,然后右键单击,并选择以管理员身份运行!
如果每天都要启动mysql服务,这样不很麻烦?所以:
2.右键单击cmd选择“附到【开始】菜单(U)”;这是就可以到开始菜单上找到cmd了,
3.右击选择属性,选择快捷方式,再选择高级,在选择以管理员身份运行,再单击确定即可!
以后只要打开开始菜单单击上面的快捷方式就可以以管理员的身份运行cmd了!
这样再输入net start mysql就不会出错了!
access denied for user 'root'@'%' to database xxxx的提示
错误的原因是root用户在远程连接的MYSQL上面,没有这个新数据库的授权。在本地使用mysql应该不存在这个问题。
解决方法,执行授权:
grant all PRIVILEGES on xxxx.* to root@'%' identified by 'password' with grant option;
xxxx为创建的数据库,password为root的密码。请按实际要求进行更改。
二、centos上安装MySQL
2.1、使用安装命令 :yum -y install mysql mysql-server mysql-devel
安装完成却发现Myserver安装缺失,在网上找原因,原来是因为CentOS 7上把MySQL从默认软件列表中移除了,用MariaDB来代替,所以这导致我们必须要去官网上进行下载,找到链接,用wget打开:
a: #wget http://dev.mysql.com/get/mysql-community-release-el7-5.noarch.rpm
b:rpm -ivh mysql-community-release-el7-5.noarch.rpm
[root@localhost mysql]# rpm -ivh mysql-community-release-el7-5.noarch.rpm 准备中... ################################# [100%] 正在升级/安装... 1:mysql-community-release-el7-5 ################################# [100%] [root@localhost mysql]# service mysqld start Redirecting to /bin/systemctl start mysqld.service Failed to start mysqld.service: Unit not found. [root@localhost mysql]
c.两次进行yum -y install mysql mysql-server mysql-devel,安装成功。再次使用该命令,然后得到以下信息
[root@localhost mysql]# yum -y install mysql mysql-server mysql-devel 已加载插件:fastestmirror Loading mirror speeds from cached hostfile * base: centos.ustc.edu.cn * epel: mirror01.idc.hinet.net * extras: mirrors.aliyun.com * updates: mirrors.aliyun.com mysql-connectors-community | 2.5 kB 00:00:00 mysql-tools-community | 2.5 kB 00:00:00 mysql56-community | 2.5 kB 00:00:00 (1/3): mysql-connectors-community/x86_64/primary_db | 37 kB 00:00:00 (2/3): mysql-tools-community/x86_64/primary_db | 54 kB 00:00:00 (3/3): mysql56-community/x86_64/primary_db | 218 kB 00:00:01 正在解决依赖关系 --> 正在检查事务 ---> 软件包 mariadb.x86_64.1.5.5.60-1.el7_5 将被 取代 ---> 软件包 mariadb-server.x86_64.1.5.5.60-1.el7_5 将被 取代 ---> 软件包 mysql-community-client.x86_64.0.5.6.43-2.el7 将被 舍弃 --> 正在处理依赖关系 mysql-community-libs(x86-64) >= 5.6.10,它被软件包 mysql-community-client-5.6.43-2.el7.x86_64 需要 ---> 软件包 mysql-community-devel.x86_64.0.5.6.43-2.el7 将被 安装 ---> 软件包 mysql-community-server.x86_64.0.5.6.43-2.el7 将被 舍弃 --> 正在处理依赖关系 mysql-community-common(x86-64) = 5.6.43-2.el7,它被软件包 mysql-community-server-5.6.43-2.el7.x86_64 需要 --> 正在检查事务 ---> 软件包 mariadb-libs.x86_64.1.5.5.60-1.el7_5 将被 取代 ---> 软件包 mysql-community-common.x86_64.0.5.6.43-2.el7 将被 安装 ---> 软件包 mysql-community-libs.x86_64.0.5.6.43-2.el7 将被 舍弃 --> 解决依赖关系完成 ... ... ... 已安装: mysql-community-client.x86_64 0:5.6.43-2.el7 mysql-community-devel.x86_64 0:5.6.43-2.el7 mysql-community-libs.x86_64 0:5.6.43-2.el7 mysql-community-server.x86_64 0:5.6.43-2.el7 作为依赖被安装: mysql-community-common.x86_64 0:5.6.43-2.el7 替代: mariadb.x86_64 1:5.5.60-1.el7_5 mariadb-libs.x86_64 1:5.5.60-1.el7_5 mariadb-server.x86_64 1:5.5.60-1.el7_5 完毕! [root@localhost mysql]#
2.2、Mysql分为client,server端两个端口,如果想要使用,先打开服务端
[root@localhost mysql]# service mysqld start Redirecting to /bin/systemctl start mysqld.service [root@localhost mysql]#
2.3、接下来进入客户端,作用命令mysql -u root -p 输入密码,默认为空
[root@localhost mysql]# mysql -u root -p Enter password: Welcome to the MySQL monitor. Commands end with ; or \g. Your MySQL connection id is 2 Server version: 5.6.43 MySQL Community Server (GPL) Copyright (c) 2000, 2019, Oracle and/or its affiliates. All rights reserved. Oracle is a registered trademark of Oracle Corporation and/or its affiliates. Other names may be trademarks of their respective owners. Type 'help;' or '\h' for help. Type '\c' to clear the current input statement. mysql>
2.4、接着检查mysql 的运行状态
service mysqld status
systemctl status mysqld.service(也是系统自动输出的,我这边全称是:Redirecting to /bin/systemctl status mysqld.service)
然后会输出一大段关于MySQL状态的信息:
[root@localhost bin]# service mysqld status Redirecting to /bin/systemctl status mysqld.service ● mysqld.service - MySQL Community Server Loaded: loaded (/usr/lib/systemd/system/mysqld.service; enabled; vendor preset: disabled) Active: active (running) since 四 2019-03-28 13:51:31 CST; 2min 1s ago Process: 52885 ExecStartPost=/usr/bin/mysql-systemd-start post (code=exited, status=0/SUCCESS) Process: 52822 ExecStartPre=/usr/bin/mysql-systemd-start pre (code=exited, status=0/SUCCESS) Main PID: 52884 (mysqld_safe) Tasks: 23 Memory: 237.9M CGroup: /system.slice/mysqld.service ├─52884 /bin/sh /usr/bin/mysqld_safe --basedir=/usr └─53050 /usr/sbin/mysqld --basedir=/usr --datadir=/var/lib/mysql --plugin-dir=/usr/lib64/mysql/plugin --log-error=/var/log/mysqld.log --pid-file=/var/run/mysqld/mysqld.pid --so... 3月 28 13:51:29 localhost.localdomain mysql-systemd-start[52822]: 2019-03-28 13:51:29 52860 [Note] InnoDB: Starting shutdown... 3月 28 13:51:30 localhost.localdomain mysql-systemd-start[52822]: 2019-03-28 13:51:30 52860 [Note] InnoDB: Shutdown completed; log sequence number 1625987 3月 28 13:51:30 localhost.localdomain mysql-systemd-start[52822]: PLEASE REMEMBER TO SET A PASSWORD FOR THE MySQL root USER ! 3月 28 13:51:30 localhost.localdomain mysql-systemd-start[52822]: To do so, start the server, then issue the following commands: 3月 28 13:51:30 localhost.localdomain mysql-systemd-start[52822]: /usr/bin/mysqladmin -u root password 'new-password' 3月 28 13:51:30 localhost.localdomain mysql-systemd-start[52822]: /usr/bin/mysqladmin -u root -h localhost.localdomain password 'new-password' 3月 28 13:51:30 localhost.localdomain mysql-systemd-start[52822]: Alternatively you can run: 3月 28 13:51:31 localhost.localdomain mysqld_safe[52884]: 190328 13:51:31 mysqld_safe Logging to '/var/log/mysqld.log'. 3月 28 13:51:31 localhost.localdomain mysqld_safe[52884]: 190328 13:51:31 mysqld_safe Starting mysqld daemon with databases from /var/lib/mysql 3月 28 13:51:31 localhost.localdomain systemd[1]: Started MySQL Community Server. [root@localhost bin]#
2.5、修改临时密码
Mysql5.7默认安装之后root是有密码的。
2.5.1 获取MySQL的临时密码
为了加强安全性,MySQL5.7为root用户随机生成了一个密码,在error log中,关于error log的位置,如果安装的是RPM包,则默认是/var/log/mysqld.log。
只有启动过一次mysql才可以查看临时密码
grep 'temporary password' /var/log/mysqld.log(如果之前安装过MySQL则这里可能会有多个密码,用最后一个,注意这个密码输入时是可以粘贴的)
这里的密码是
YdsGaxOq>2n!
2.5.2 登陆并修改密码
使用默认的密码登陆
mysql -uroot -p(这是一个MySQL的以密码登录root用户的命令)
用该密码登录到服务端后,必须马上修改密码再执行一些数据库操作,不然会报如下错误:
mysql> select @@log_error;
ERROR 1820 (HY000): You must reset your password using ALTER USER statement before executing this statement.
mysql>
修改密码(注意,登录后的操作后面都最好要有;结尾)
ALTER USER 'root'@'localhost' IDENTIFIED BY 'root123';
如果密码设置太简单出现以下的提示
必须修改两个全局参数:
首先,修改validate_password_policy参数的值
mysql> set global validate_password_policy=0;
再修改密码的长度
set global validate_password_length=1;
再次执行修改密码就可以了
ALTER USER 'root'@'localhost' IDENTIFIED BY 'root123';(ALTER等可以写成小写)
2.6、授权其他机器登陆
GRANT ALL PRIVILEGES ON *.* TO 'root'@'%' IDENTIFIED BY 'yourpassword' WITH GRANT OPTION;
FLUSH PRIVILEGES;
2.7、关于密码设置的详细说明
ERROR 1819 (HY000): Your password does not satisfy the current policy requirements
2.8、mysql配置文件
linux版本是my.cnf,一般会放在/etc/my.cnf,/etc/mysql/my.cnf
win下的是my.ini,一般会在安装目录的根目录
但,我在/etc/或者/etc/mysql下也没找到my.cnf。
在这里找到了:
[root@target_pc etc]# find / -name my.cnf
/usr/my.cnf
我们注意到,这里只说了修改 my.cnf,并没有说清楚其绝对路径是哪个文件。也就是说,有可能修改的不是正确路径下的my.cnf文件。
在MySQL中,是允许存在多个 my.cnf 配置文件的,有的能对整个系统环境产生影响,例如:/etc/my.cnf。有的则只能影响个别用户,例如:~/.my.cnf。
MySQL读取各个my.cnf配置文件的先后顺序是:
/etc/my.cnf
/etc/mysql/my.cnf
/usr/local/mysql/etc/my.cnf
~/.my.cnf
其他自定义路径下的my.cnf,例如:/data/mysql/yejr_3306/my.cnf
不管是mysqld服务器端程序,还是mysql客户端程序,都可以采用下面两个参数来自行指定要读取的配置文件路径:
-defaults-file=#, 只读取指定的文件(不再读取其他配置文件)
-defaults-extra-file=#, 从其他优先级更高的配置文件中读取全局配置后,再读取指定的配置文件(有些选项可以覆盖掉全局配置从的设定值)
因此,可以看到,如果你修改的是非“著名”目录下的 my.cnf,有可能看起来是不生效的,需要自行指定,或者统一放在 /etc/my.cnf 下,采用多实例的方式来管理即可。
三、MySQL打开binlog
1、 开启mysql的binlog功能
开启binlog,并且将binlog的格式改为Row,这样就可以获取到CURD的二进制内容,
windows上的路径为:C:\ProgramData\MySQL\MySQL Server 5.7\my.ini。
linux上的路径为:/etc/my.cnf
[mysqld] #请放在[mysqld]下面,否则不生效 log-bin=mysql-bin #添加这一行就ok binlog-format=ROW #选择row模式 server_id=1
2、验证binlog是否开启
使用命令验证,并且开启binlog的过期时间为30天,默认情况下binlog是不过期的,这就导致你的磁盘可能会爆满,直到挂掉。
show variables like 'log_%';
log_bin | ON
3、设置binlog的有效期:
#设置binlog的过期时间为30天 mysql> show variables like '%expire_logs_days%'; +------------------+-------+ | Variable_name | Value | +------------------+-------+ | expire_logs_days | 0 | +------------------+-------+ 1 row in set (0.00 sec) mysql> set global expire_logs_days=30; Query OK, 0 rows affected (0.00 sec) mysql>
四、错误信息
错误信息1 :ERROR 1045 (28000): Access denied for user 'usera'@'localhost' (using password:YES)
错误信息2 :ERROR 1045 (28000): Access denied for user 'usera'@'localhost' (using password:NO)
mysql> show grants for 'root'@'localhost'; +---------------------------------------------------------------------+ | Grants for root@localhost | +---------------------------------------------------------------------+ | GRANT ALL PRIVILEGES ON *.* TO 'root'@'localhost' WITH GRANT OPTION | | GRANT PROXY ON ''@'' TO 'root'@'localhost' WITH GRANT OPTION | +---------------------------------------------------------------------+ 2 rows in set (0.00 sec) mysql> select user,host from mysql.user; +-------+-----------------------+ | user | host | +-------+-----------------------+ | canal | % | | root | 127.0.0.1 | | root | ::1 | | | localhost | | root | localhost | | | localhost.localdomain | | root | localhost.localdomain | +-------+-----------------------+ 7 rows in set (0.01 sec) mysql> GRANT ALL PRIVILEGES ON *.* TO'root'@'%' IDENTIFIED BY 'root' WITH GRANT OPTION; Query OK, 0 rows affected (0.00 sec) mysql> flush privileges; Query OK, 0 rows affected (0.00 sec) mysql> show grants for 'root'@'%'; +--------------------------------------------------------------------------------------------------------------------------------+ | Grants for root@% | +--------------------------------------------------------------------------------------------------------------------------------+ | GRANT ALL PRIVILEGES ON *.* TO 'root'@'%' IDENTIFIED BY PASSWORD '*81F5E21E35407D884A6CD4A731AEBFB6AF209E1B' WITH GRANT OPTION | +--------------------------------------------------------------------------------------------------------------------------------+ 1 row in set (0.00 sec) mysql> select user,host,password from mysql.user; +-------+-----------------------+-------------------------------------------+ | user | host | password | +-------+-----------------------+-------------------------------------------+ | root | localhost | | | root | localhost.localdomain | | | root | 127.0.0.1 | | | root | ::1 | | | | localhost | | | | localhost.localdomain | | | canal | % | *E3619321C1A937C46A0D8BD1DAC39F93B27D4458 | | root | % | *81F5E21E35407D884A6CD4A731AEBFB6AF209E1B | +-------+-----------------------+-------------------------------------------+ 8 rows in set (0.00 sec) mysql>