前言
本次的服务器为 “Ubuntu Server 18.04.1 LTS 64位”。
下载MySQL
(Mysql的官网-->https://www.mysql.com/)
选中社区版就行,另一个企业版本要收费的。
选择 server
若是ubuntu服务器,可选这个:
可能会提示注册账号,不过,不用管它,直接点击"No thanks, just start my download"下载就行。
不过,由于是国外的网站,非常的慢。
安装
1.先解压,命令如下:
mkdir mysql-5.0.96
tar -zxvf mysql-5.0.96-linux-x86_64-glibc23.tar.gz -C mysql-5.0.96/可以先不加入环境变量里,若要运行,直接使用绝对路径命令运行就行。
mysql-5.0版本的配置
ubuntu下的配置
进入目录 mysql-5.0.96/mysql-5.0.96-linux-x86_64-glibc23/ 执行命令 : ./configure
在 mysql-5.0.96/ 新建一个文件 mysql.sh ,内容为:(只需修改 MYSQL_HOME 的值)
#!/bin/bash
# Path to mySQL
MYSQL_HOME="/home/ubuntu/mysql-5.0.96/mysql-5.0.96-linux-x86_64-glibc23"
# Check for required environment variables.
if [ -z "$MYSQL_HOME" ];
then
echo Error: MYSQL_HOME environment variable is not set.
exit 2
fi
# paser command params
case "$1" in
start)
#/var/run/mysqld/mysqld.sock
if test -e $MYSQL_HOME/mysqld.sock
#$MYSQL_HOME/bin/mysqladmin ping --socket=$MYSQL_HOME/mysqld.sock >nul 2>&1
then
echo MySQL already Start!
else
exec $MYSQL_HOME/bin/mysqld --no-defaults --user=james --basedir=$MYSQL_HOME --character-sets-dir=$MYSQL_HOME/share/charsets --language=$MYSQL_HOME/share/english --character-set-server=gb2312 --socket=$MYSQL_HOME/mysqld.sock
fi
;;
stop)
if test -e $MYSQL_HOME/mysqld.sock
#$MYSQL_HOME/bin/mysqladmin ping --socket=$MYSQL_HOME/mysqld.sock >nul 2>&1
then
echo please input mysql user name:
read name
echo please input mysql password:
read password
exec $MYSQL_HOME/bin/mysqladmin shutdown --user=$name --password=$password --socket=$MYSQL_HOME/mysqld.sock
fi
;;
*)
echo "Usage: mysql.sh {start|stop}"
;;
esac
exit 0
接着,执行命令 ./mysql.sh
但是出现了一个问题:/bin/bash^M: bad interpreter: No such file or directory
解决方法:
shell脚本格式必须是unix才行,但我这个脚本是在windows上编写完成传到Linux服务器上的,所以一执行就报错。
notepad++设置为
再新建一个文件,就是 unix格式的了,这个问题就可以解决啦。
再输入
./mysql.sh start &
或者
./mysql.sh start
即可启动 mysql 服务。
出现了一个问题:Can't find messagefile '/home/ubuntu/mysql-5.0.96/mysql-5.0.96-linux-x86_64-glibc23/share/english/errmsg.sys'
解决方法:
那是因为实际的路径是 share/mysql/english/errmsg.sys , 多了一个目录 mysql, 所以,把english 这个文件夹复制多一个,放到 share目录下就行。另一种更好的方法是,把mysql.sh里的路径改一下就行。
启动成功的界面如下;
登陆mysql
输入命令: ./mysql -u root -p
但是又出现了一个问题:ERROR 2002 (HY000): Can't connect to local MySQL server through socket '/tmp/mysql.sock' (2)
解决方法:
换成命令 ./mysql -uroot -h 127.0.0.1 -p
参考:https://www.jb51.net/article/174244.htm
然后其它命令就和window下的命令是一样的了。
创建远程登录用户并授权
如果没有这一步,就只能在本地用命令行登录访问了,多不方便,所以,非常有必要创建一个远程登录用户。
1.先建一个数据库,test是默认就会存在的,所以下图中会提示已存在。(远程登陆是无法创建表的,这个动作必须在 ubuntu 上用命令实现)
2.命令如下图:
grant all PRIVILEGES on discuz.* to ted@'123.123.123.123' identified by '123456';
上面的语句表示将 discuz 数据库的所有权限授权给 ted 这个用户,允许 ted 用户在 123.123.123.123 这个 IP 进行远程登陆,并设置 ted 用户的密码为 123456 。
注意:
(1)all PRIVILEGES 表示赋予所有的权限给指定用户,这里也可以替换为赋予某一具体的权限,例如:select,insert,update,delete,create,drop 等,具体权限间用“,”半角逗号分隔。
(2)discuz.* 表示上面的权限是针对于哪个表的,discuz 指的是数据库,后面的 * 表示对于所有的表,由此可以推理出:对于全部数据库的全部表授权为“*.*”,对于某一数据库的全部表授权为“数据库名.*”,对于某一数据库的某一表授 权为“数据库名.表名”。
(3)ted 表示你要给哪个用户授权,这个用户可以是存在的用户,也可以是不存在的用户。
(4)123.123.123.123 表示允许远程连接的 IP 地址,如果想不限制链接的 IP 则设置为“%”即可。为了安全,还是尽量限定访问IP, 查看本机公网IP的方法为,在浏览器访问 http://ip.chinaz.com 即可,非常的简单。
(5)123456 为用户的密码。
3.执行更新权限(刷新权限)
flush privileges;
可能会遇到的问题:
明明在ubuntu里用命令创建了新的表,但是,为什么Navicat上看不到呢?这其实是粗心所导致的,授权命令 grant 里是包含表格名的,新建的表,没有授权,所以当然就看不到啦。还有,注意,用户名不要填错了。
远程登录
设置好后,这边在本地电脑上打开 Navicat,就可以顺利连上啦,如下所示:
当然了,为了安全起见,有时要删除远程登录用户,方法如下,(尚没有测试过此法。)
https://blog.slogra.com/post-56.html
数据库复制
比如想把 sitescms 数据库从window下复制倒ubuntu服务器上,方法如下,利用Navicat的备份功能,先把window上的备份了,再右键-->复制, 然后直接粘贴到ubuntu服务器上,再还原即可。整个操作一直都是在 Navicat 上的,无需其它多语的操作。
附件1:设置密码
设置密码
mysql> set password for root@localhost = password('123456');
但是出现了一个问题,如下:
意思是:在sql语句第1行有个语法错误。
改成大写就行了,一般情况下,sql关键字都是大写的。
mysql> SET PASSWORD FOR root@localhost = '123456';
扩展:
让外部可以访问root用户,如果是的话,要用SET PASSWORD FOR root@'%' = '123456';
也要以简化成 mysql> SET PASSWORD = '123456';
如果是 mysql5.0,操作方法就要变一下:
(ubuntu下的操作方法也是一样的,验证过了。)
刚安装完成时root账号默认密码为空,此时可以将密码修改为指定的密码。如:123456。
c:>mysql –uroot
mysql>show databases;
mysql>use mysql;
mysql>UPDATE user SET password=PASSWORD("123456") WHERE user='root';
mysql>FLUSH PRIVILEGES;
mysql>QUIT
如下图:
附录2: 加环境变量(可以不设置,因为貌似不会用到)
1.先备份 /etc/profile
2.新装的ubuntu系统是没有root用户,这时,要先设定root用户,命令为:
sudo passwd
3.在/etc/profile中增加 (或者可以加在 /etc/bash.bashrc 里)
PATH+="PATH:/home/ubuntu/mysql/bin"
export PATH
如下:
验证是否安装成功:
先退出,再重新登录,新加入的环境变量才会生效。
mysql --version
问题1:ls 无法使用
the command could not be located because '/bin' is not included in the PATH environment variable.
原来的ubuntu 环境变量失效,
临时解决方法:比如 ls 改成 /bin/ls
sudo 改成 /usr/bin/sudo
解决方法二:
彻底解决问题的办法
/etc/profile中的 "=" 号改成 ”+=“ 号,当然,上面的命令已经加入了"+"号:
PATH+="PATH:/home/ubuntu/mysql/bin"
export PATH
问题2:sudo mysql --version失效
(注意:其实,完全可以不使用 sudo 命令的。)
输入 mysql --version 可能正常使用,但是加入 sudo 在前面就无法使用了,如下 :
临时解决方法:
在 /home/root/.bashrc 里加入上面的那句环境变量。虽然 sudo mysql --version 还是不能用,但是,可以先使用命令 su 切换到 root 用户,再使用 mysql --version 就行。