MySQL是一种关系型数据库管理系统(RDBMS),关系型数据库的特点是将数据保存在不同的表中,在将这些表放入不同的数据库中,而不是将所有数据统一放在一个大仓库里.这样的设计增加了 MySQL 的读取速度,灵活性可管理性也得到了很大提高 ,访问以及管理 MysQL 数据库的最常用标准化语言为 SQL 结构化杳询语言。
由 MySQL AB 公司内部专门的人员负贵开发及维护,但同时也会吸纳社区人员编写的优秀代码及算法,并且由专门的人员严格按照软件测试流程对这些采纳的代码进行严格测试,没有问题再进行发布,简单地说, MysQL 商业版是由 MySQL 公司内部发布,同时参考社区版的先进代码功能和算法,是 MysQL 公司的盈利产品,需要付费才能使用及提供服务支持,稳定性和可靠性无疑都是最好的,例如某知名分类门户网站早期就购买过 MySQL 商业版,价格不比那些闭源的商业数据库便宜花费40万左右好贵的;
Alpha 版一般只在开发的公司内部运行,不对外公开,主要是开发者自己对产品进行测试,检查产品是否存在缺陷、错误,验证产品功能与说明书、用户手册是否一致; MySQL 是属于开放源代码的开源产品,因此需要世界各地开发者、爱好者和用户参与软件的开发、测试和手册编写等工作,所以会对外公布此版本的源码和产品,方便任何人可以参与开发或测试工作,甚至编写与修改用户手册;
GA 版是软件产品正式发布的版本(生产版本的产品),环境都会选择 GA 版本的 MySQL 软件,用于真实的生产环境中,有的企业追求新功能驱动而牺牲稳定性使用其它版本;
四种发布版本选择说明: MySQL AB 官方网站提供数据库各种版本下载,主要是 MySQL 数据库属于开放源代码的数据库产品,鼓励全球的技术爱好者参与研发、测试、文档编写和经验分享,甚至包过产品发展规划,对于 Development 版本、 Alpha 版本和 Beta 版本是绝对不允许使用在任何生产环境的,肯定存在重大的问题或功能未完全实现,绝大多数情况下 RC 版本也是不允许使用在生产环境,毕竟这是一个 OA 版本之前,也即生产版本发布之前的一个小版本。 对 MySQL 数据库 GA 版本,也是需要慎重选择,开源社区产品毕竟不是经过严格的测试工序完成的产品,是全球开源技术人员的自愿完成的,会存在比商业产品稳定性弱的缺陷,更严格的选择见后文;
(3) MySQL 数据库产品线 早期MySQL也是遵循版本号逐渐增加的方式发展,例如MySQL-x-xx-xx.tar.gz,例如4.1.7 / 5.0.56 等等;
MySQL是一种关系型数据库管理系统(RDBMS),关系型数据库的特点是将数据保存在不同的表中,在将这些表放入不同的数据库中,而不是将所有数据统一放在一个大仓库里.这样的设计增加了 MySQL 的读取速度,灵活性可管理性也得到了很大提高 ,访问以及管理 MysQL 数据库的最常用标准化语言为 SQL 结构化杳询语言。
由 MySQL AB 公司内部专门的人员负贵开发及维护,但同时也会吸纳社区人员编写的优秀代码及算法,并且由专门的人员严格按照软件测试流程对这些采纳的代码进行严格测试,没有问题再进行发布,简单地说, MysQL 商业版是由 MySQL 公司内部发布,同时参考社区版的先进代码功能和算法,是 MysQL 公司的盈利产品,需要付费才能使用及提供服务支持,稳定性和可靠性无疑都是最好的,例如某知名分类门户网站早期就购买过 MySQL 商业版,价格不比那些闭源的商业数据库便宜花费40万左右好贵的;
Alpha 版一般只在开发的公司内部运行,不对外公开,主要是开发者自己对产品进行测试,检查产品是否存在缺陷、错误,验证产品功能与说明书、用户手册是否一致; MySQL 是属于开放源代码的开源产品,因此需要世界各地开发者、爱好者和用户参与软件的开发、测试和手册编写等工作,所以会对外公布此版本的源码和产品,方便任何人可以参与开发或测试工作,甚至编写与修改用户手册;
GA 版是软件产品正式发布的版本(生产版本的产品),环境都会选择 GA 版本的 MySQL 软件,用于真实的生产环境中,有的企业追求新功能驱动而牺牲稳定性使用其它版本;
四种发布版本选择说明: MySQL AB 官方网站提供数据库各种版本下载,主要是 MySQL 数据库属于开放源代码的数据库产品,鼓励全球的技术爱好者参与研发、测试、文档编写和经验分享,甚至包过产品发展规划,对于 Development 版本、 Alpha 版本和 Beta 版本是绝对不允许使用在任何生产环境的,肯定存在重大的问题或功能未完全实现,绝大多数情况下 RC 版本也是不允许使用在生产环境,毕竟这是一个 OA 版本之前,也即生产版本发布之前的一个小版本。 对 MySQL 数据库 GA 版本,也是需要慎重选择,开源社区产品毕竟不是经过严格的测试工序完成的产品,是全球开源技术人员的自愿完成的,会存在比商业产品稳定性弱的缺陷,更严格的选择见后文;
(3) MySQL 数据库产品线 早期MySQL也是遵循版本号逐渐增加的方式发展,例如MySQL-x-xx-xx.tar.gz,例如4.1.7 / 5.0.56 等等;
第 3 条- 6.0.xx - 8.0.xx 产品线 为了更好地推广 MysQL cluster 版本,以及提高 MySQL cluster 的性能和稳定性,以及功能改进和增加,以及改动 MySQL 墓础功能,使其对 Cluster 存储引擎提供更有效的支持与优化,版本号为 6.0.xx 开发, 现在MySQL的最高社区版本是 for the MySQL 8.0 Generally Available (GA) Release;
#下面为了学习我就不安装默认字符集 (校对规则 - 工作中必须安装按照指定得字符集) -DDEFAULT_CHARSET=utf8 \ -DDEFAULT_COLLATION=utf8_general_ci \ # 表示编译生成makefile成功 # -- Generating done # -- Build files have been written to: /opt/MYSQL/mysql-5.5.32 # make && make install
/** 帮助得一些信息 To start mysqld at boot time you have to copy support-files/mysql.server to the right place for your system PLEASE REMEMBER TO SET A PASSWORD FOR THE MySQL root USER ! (设置密码)
Step 3 、添加用户和组: groupadd mysql && useradd -r -g mysql mysql -s /sbin/nologin -M more /etc/group | grep "mysql"# 查看 是否存在 mysql 组 groups mysql # 查看 msyql 属于哪个组
ALTER USER 'root'@'%' IDENTIFIED BY 'weiye@888'; #/ ALTER USER USER() IDENTIFIED BY 'weiye@888'; #mysql8.x更改密码 (mysql 8.0 有密码强度设置) #新建本地用户 CREATE USER 'test'@'localhost' IDENTIFIED BY 'Test@123456'; #新建远程用户 CREATE USER 'test'@'%' IDENTIFIED BY 'Test@123456'; #新建数据库 CREATE DATABASE testdb; #赋予指定账户指定数据库远程访问权限 GRANT ALL PRIVILEGES ON testdb.* TO 'test'@'%'; #赋予指定账户对所有数据库远程访问权限 GRANT ALL PRIVILEGES ON *.* TO 'test'@'%'; #赋予指定账户对所有数据库本地访问权限 GRANT ALL PRIVILEGES ON *.* TO 'test'@'localhost'; #刷新权限 FLUSH PRIVILEGES;
# MySQL Server Instance Configuration File # ---------------------------------------------------------------------- # Generated by the MySQL Server Instance Configuration Wizard # # # Installation Instructions # ---------------------------------------------------------------------- # # On Linux you can copy this file to /etc/my.cnf to set global options, # mysql-data-dir/my.cnf to set server-specific options # (@localstatedir@ for this installation) or to # ~/.my.cnf to set user-specific options. # # On Windows you should keep this file in the installation directory # of your server (e.g. C:\Program Files\MySQL\MySQL Server X.Y). To # make sure the server reads the config file use the startup option # "--defaults-file". # # To run run the server from the command line, execute this in a # command line shell, e.g. # mysqld --defaults-file="D:\GreenSoft\MySQL\my.ini" # # To install the server as a Windows service manually, execute this in a # command line shell, e.g. # mysqld --install mysql --defaults-file="D:\GreenSoft\MySQL\my.ini" # # And then execute this in a command line shell to start the server, e.g. # net start mysql # # # Guildlines for editing this file # ---------------------------------------------------------------------- # # In this file, you can use all long options that the program supports. # If you want to know the options a program supports, start the program # with the "--help" option. # # More detailed information about the individual options can also be # found in the manual. # # For advice on how to change settings please see # http://dev.mysql.com/doc/refman/8.0/en/server-configuration-defaults.html # # # CLIENT SECTION # ---------------------------------------------------------------------- # # The following options will be read by MySQL client applications. # Note that only client applications shipped by MySQL are guaranteed # to read this section. If you want your own MySQL client program to # honor these values, you need to specify it as an option during the # MySQL client library initialization. #
[client] no-beep
# pipe # socket=0.0 port=3306
[mysql]
default-character-set=utf8
[mysqld]
# 这是8.0.4的新特性 caching_sha2_password,在linux上面使用命宁 mysql -uroot -proot 可以链接,但是使用windows下面的navict链接不成功 default_authentication_plugin = mysql_native_password
# These are commonly set, remove the # and set as required. character-set-server = utf8 basedir = D:\Program Files\mysql-8.0.11-winx64 datadir = D:\Program Files\mysql-8.0.11-winx64\data port = 3306 server_id = 1
# Remove leading # and set to the amount of RAM for the most important data # cache in MySQL. Start at 70% of total RAM for dedicated server, else 10%. innodb_buffer_pool_size = 128M
# Remove leading # to turn on a very important data integrity option: logging # changes to the binary log between backups. # log_bin
# General and Slow logging. log-output=FILE general-log=0 general_log_file="CUPID.log" slow-query-log=1 slow_query_log_file="CUPID-slow.log" long_query_time=10
# Binary Logging. # log-bin
# Error Logging. log-error="CUPID.err"
# Remove leading # to set options mainly useful for reporting servers. # The server defaults are faster for transactions and fast SELECTs. # Adjust sizes as needed, experiment to find the optimal values. # join_buffer_size = 128M # sort_buffer_size = 2M # read_rnd_buffer_size = 2M
ALTER USER 'root'@'localhost' IDENTIFIED BY '123456'; CREATE USER 'backup'@'10.0.0.2' IDENTIFIED BY '123456'; #用户名为backup,密码123456,只允许10.0.0.2远程登录 GRANT select,lock tables ON db1.* TO 'backup'@'%'; #授权db1数据库的select和lock tables权限给backup用户
###上面############ [root@WeiyiGeek mysql]$ mysql -h localhost #安全完成后默认无密码 ALTER USER 'root'@'localhost' IDENTIFIED BY 'System123@'; mysql> select user,host from mysql.user; //删除空表用户 mysql> delete from mysql.user where user='' or user='::1'; //ipv6 mysql> drop database test; //drop 有时候干不掉 特殊字符 mysql> delete from mysql.user; //或者干掉所有得管理员(实际清空列表)
#建立一个类似Root权限得用户 mysql> grant all privileges on *.* to system@'localhost' identified by 'system' with grant option; #grant option; 可以给其他建立得用户赋权限 Query OK, 0 rows affected (0.00 sec) mysql> flush privileges; Query OK, 0 rows affected (0.00 sec)
#还可以直接设置 mysql -root 登陆密码 [WeiyiGeek ~]# /application/mysql/bin/mysqladmin -u system password 'system'
#设置自启动状态 与 验证密码 [root@WeiyiGeek ~]# chkconfig mysqld on [root@WeiyiGeek ~]# chkconfig --list mysqld [root@WeiyiGeek ~]# mysql -usystem -psystem
5.7.x 二进制安装验证
1 2 3 4 5 6 7 8 9 10 11
mysql -uroot -p -A #当我们打开数据库,即use dbname时,要预读数据库信息,当使用-A参数时,就不预读数据库信息。 update user set authentication_string = ''where user = 'root'; #先设置密码为空,然后在注释my.cnf文件中的skip-grant-tables
# 5.7.x 支持的快捷改密码 设置密码才能进行后续的数据库操作:SET PASSWORD = PASSWORD('System123@');(密码设置为了123456) # mysql8.0 不支持 修改密码为 password:update user set authentication_string=PASSWORD('password') where User='root'; # 建立用户与修改权限 mysql> use msyql mysql> create user 'user-name'@'ip-address' identified by 'password';(红色标记为需要修改的地方) mysql> grant all on *.* to 'root'@"%" identified by "password" with grant option; mysql> flush privileges;
8.x 二进制安装验证
1 2 3 4 5 6 7 8 9 10 11 12
#如果密码为空,在密码设置好后删掉my.cnf里的 -> skip-grant-tables 之后再重启/etc/init.d/mysqld restart mysql -uroot -p #交互式登录 mysql -uroot -p "lTRGbo53ii<5" -S /var/lib/mysql/mysql #多实例登录
#首次登录密码设置,MYSQL8的特性密码强度是有要求的 mysql>ALTER USER 'root'@'%' IDENTIFIED BY 'System123@';
#采用 mysql_native 加密方式 方便 NATIVE客户端远程工具登录 mysql>ALTER USER 'root'@'%' IDENTIFIED BY 'weiyigeek@123' PASSWORD EXPIRE NEVER; mysql>ALTER USER 'root'@'%' IDENTIFIED WITH mysql_native_password BY 'weiyigeek@123'; mysql>update user set host = '%'where user = 'root'; #使其被任何主机连接(不安全) mysql>update user set authentication_string = ''where user = 'root'; #清空root的密码 在skip0granbt-tables处使用
#此方法适合--skip-grant-tables方法修改密码当忘记密码的时候; > UPDATE mysql.user SET password = PASSWORD("new_pass") WHERE user='root' and host='localhost'; > flush privileges; #任何时候都要记住改密的啥时候都要更新权限;
> SET password = PASSWORD('olay_new'); #此方法不适合--skip-grant-tables方法修改密码当忘记密码的时候;
#Mysql8.0 mysql>ALTER USER 'root'@'%' IDENTIFIED BY 'MyNewPass4!' PASSWORD EXPIRE NEVER; mysql>ALTER USER 'root'@'%' IDENTIFIED WITH mysql_native_password BY 'MyNewPass4!';
--#配置1: 数据库远程连接(外部访问)# mysql 默认是禁止远程连接的,你在安装mysql的系统行运行mysql -u root -p 后进入mysql,只需要调整%为指定ip地址回去本地;
mysql>use mysql; mysql>grant all privileges on 数据库名字.* to '远程用户名'@'远程IP地址' identified by '远程用户的密码'; mysql>GRANT ALL PRIVILEGES ON *.* TO 'root'@'%' IDENTIFIED BY 'rootpassword' WITH GRANT OPTION; #开启权限分配 mysql> flush privileges;
--# mysql默认情况下是只能本地访问数据库,现在进行改变(全局配置远程连接) vim /etc/mysql/my.cnf #12.06 verion vim /etc/mysql/mysql.conf.d/mysqld.cnf # 16.04 version
--#找到bind-address并注销,这样就关闭了白名单,及所有ip都能连接这里的mysql,这里是mysql服务器的全局设置. # localhost which is more compatible and is not less secure. bind-address = 127.0.0.1
#具体的mysql权限 #可以通过mysql中user,host,db这三张表进行查看权限 INSERT DELETE UPDATE SELECT CREATE #创建库和表 DROP #删除库和表 REFERENCES #引用 INDEX #索引 ALTER #修改库和表 CREATE TEMPOARY TABLES #创建临时表 LOCK TABLES #锁表 EXECUTE #执行 CREATE VIEW #创建视图 SHOW VIEW #显示视图 CREATE ROUTINE #创建存储过程 ALTER ROUTINE #修改存储过程 EVENT #事件 TRIGGER #触发器
#下面来建立用户 (test) CREATE USER test@'10.0.2.%' IDENTIFIED BY 'test'; #这时的权限是USAGE , 基本只有登录的权限 GRANT ALL ON test.* TO test@'10.0.2.%';
#等同于下面这一条 GRANT ALL ON test.* TO test1@'10.0.2.0/255.255.255.0' IDENTIFIED BY 'test1'; #需要用户有建立字用户权限的功能的话还需加上 :WITH GRANT OPTION system@localhost 21:48:52 >GRANT ALL ON *.* TO root@'10.0.2.0/24' IDENTIFIED BY 'root' WITH GRANT OPTION;
#最小分配权限案例 GRANT INSERT,UPDATE,DELETE,SELECT,CREATE,DROP ON test.* TO test1@'%' IDENTIFIED BY 'test1';
mysql -usystem -p123456 -e "SHOW GRANTS FOR system@localhost" # -e 交换式
方式1.请访问本博主的B站【WeiyiGeek】首页关注UP主, 将自动随机获取解锁验证码。
Method 2.Please visit 【My Twitter】. There is an article verification code in the homepage.
方式3.扫一扫下方二维码,关注本站官方公众号
回复:验证码
将获取解锁(有效期7天)本站所有技术文章哟!