{"id":77263,"date":"2018-05-25T16:00:43","date_gmt":"2018-05-25T13:00:43","guid":{"rendered":"https:\/\/www.javacodegeeks.com\/?p=77263"},"modified":"2018-05-25T12:47:47","modified_gmt":"2018-05-25T09:47:47","slug":"apache-derby-database-users-and-permissions","status":"publish","type":"post","link":"https:\/\/www.javacodegeeks.com\/2018\/05\/apache-derby-database-users-and-permissions.html","title":{"rendered":"Apache Derby Database Users and Permissions"},"content":{"rendered":"<h2>Abstract<\/h2>\n<p>Apache Derby is awesome! Especially in a Microservices environment where the data for services (may) shrink and not require a heartier RDBMS. Derby is awesome because it\u2019s so easy to use, especially when it come to users and permissions &#8211; you don\u2019t need any! But, it may be the case you want to create an application-level user with limited permissions to use in Derby. The purpose of this blog is to document how to create application-level, limited permission users in Derby.<\/p>\n<h2>Disclaimer<\/h2>\n<p>This post is solely informative. Critically think before using any information presented. Learn from it but ultimately make your own decisions at your own risk.<\/p>\n<h2>Requirements<\/h2>\n<p>I did all of the work for this post using the following major technologies. You may be able to do the same thing with different technologies or versions, but no guarantees.<\/p>\n<ul>\n<li>Apache Derby 10.14.1.0<\/li>\n<li>Java 1.8.0_152_x64<\/li>\n<\/ul>\n<p>I am not going to go through the process of downloading and installing these technologies. I\u2019ll leave that as an exercise for you.<\/p>\n<h2>Run Derby Network Server<\/h2>\n<p>The first thing you must do is run a Derby network server. In my previous blog post titled <a href=\"https:\/\/mjremijan.blogspot.com\/2016\/06\/multiple-derby-network-servers-on-same.html\">Multiple Derby Network Servers on the same Host<\/a>, I give detailed instructions on how to do this. Here is the tldr; (for Windows):<\/p>\n<h2>config-resiste.cmd<\/h2>\n<pre class=\"brush:sql\">@echo off\r\nREM --- START EDITING ---\r\nset DERBY_HOME=C:\\Users\\Michael\\Applications\\Derby\\db-derby-10.14.1.0-bin\r\nset JAVA_HOME=C:\\Program Files\\Java\\jdk1.8.0_152\r\nset NS_HOME=C:\\Users\\Michael\\Applications\\Derby\\servers\\resiste\\data\r\nset NS_PORT=11528\r\nREM --- STOP EDITING ---\r\nset PATH=%DERBY_HOME%\\bin;%PATH%\r\nset DERBY_OPTS=-Dderby.drda.portNumber=%NS_PORT% -Dderby.system.home=%NS_HOME%<\/pre>\n<h2>start-resiste.cmd<\/h2>\n<pre class=\"brush:sql\">@echo off\r\ncall config-resiste.cmd\r\nStartNetworkServer<\/pre>\n<h2>stop-resiste.cmd<\/h2>\n<pre class=\"brush:sql\">@echo off\r\ncall config-resiste.cmd\r\nStopNetworkServer<\/pre>\n<p>Now that you can run a Derby network server, let\u2019s configure it.<\/p>\n<h2>Configure Derby Network Server<\/h2>\n<p>To configure the Derby network server, you need to create a <code>derby.properties<\/code> file. But where does the file go? It can go in a couple different places. Let\u2019s take a look.<\/p>\n<p>I\u2019ll first assume that you ignored the <strong>Run Derby Network Server<\/strong> section above and instead are running Derby with all its defaults. If that\u2019s the case, you probably started the network server by finding the <code>%DERBY_HOME%\\bin\\startNetworkServer.bat<\/code> file and double-clicking it. If you did this &#8211; highly not recommended &#8211; then Derby thinks the <code>%DERBY_HOME%\\bin<\/code> directory is its system directory. You can confirm this by looking for the <code>%DERBY_HOME%\\bin\\derby.log<\/code> file. If confirmed, then you need to create a <code>%DERBY_HOME%\\bin\\derby.properties<\/code> file. Wherever the <code>derby.log<\/code> file is, that\u2019s where you create the <code>derby.properties<\/code> file.<div style=\"display:inline-block; margin: 15px 0;\"> <div id=\"adngin-JavaCodeGeeks_incontent_video-0\" style=\"display:inline-block;\"><\/div> <\/div><\/p>\n<p>On the other hand if you didn\u2019t ignore the <strong>Run Derby Network Server<\/strong> section above, congratulations! The <code>derby.properties<\/code> file must go into the directory set by the <code>-Dderby.system.home<\/code> Java system property. See the <code>config-resiste.cmd<\/code> file example above.<\/p>\n<p>Now that you know where to put the <code>derby.properties<\/code> file, here is (an example) of what to put in it:<\/p>\n<pre class=\"brush:sql\"># Passwords don't expire for 10 years\r\nderby.authentication.native.passwordLifetimeMillis=315360000000\r\n\r\n# Use the best hash algorithm you can\r\nderby.authentication.builtin.algorithm=SHA-512\r\n\r\n# Use a larger salt length for better security\r\nderby.authentication.builtin.saltLength=128\r\n\r\n# Re-hash this number of times for better security\r\nderby.authentication.builtin.iterations=1564<\/pre>\n<p>Now you have the network server configured. Start it and let\u2019s use it. The first thing we\u2019ll use it for is configuring the Derby admin user. We\u2019ll look at this next.<\/p>\n<h2>Run ij<\/h2>\n<p>Before we configure the Derby admin user, we first neeed to run the <code>ij<\/code> application. <code>ij<\/code> is to Derby what <code>sqlplus<\/code> is to Oracle; just a simple command-line interface. Find and run <code>%DERBY_HOME%\\bin\\ij.bat<\/code>.<\/p>\n<p><strong>NOTE<\/strong> For the rest of the blog, the <code>\"ij&gt;\"<\/code> prompt will indicate SQL commands that must be executed within <code>ij<\/code>. I assume you\u2019ll figure out you need to run <code>ij<\/code> to execute these commands.<\/p>\n<p>Now that <code>ij<\/code> is running, we get get some work done. Let\u2019s look at that Derby admin user.<\/p>\n<h2>Create the Admin User<\/h2>\n<p>Now that the Derby network server is configured and running, we\u2019ll need configure the admin user. The admin user will have full permissions to perform any database operation. Let\u2019s look at the commands:<\/p>\n<pre class=\"brush:sql\">ij&gt; connect 'jdbc:derby:\/\/localhost:11528\/resiste;create=true;' user 'sa_resiste';\r\nij&gt; CALL SYSCS_UTIL.SYSCS_CREATE_USER('sa_resiste', 'derby123'); \r\nij&gt; disconnect;\r\nij&gt; exit;<\/pre>\n<p>Line 1 is a standard JDBC connection string to connect to the database. The database name is <code>resiste<\/code>. Since this is the first time connecting to the database, the connection string contains <code>create=true;<\/code> to create the database. I connect to the database with the <code>sa_resiste<\/code> user, and since the database is being created during this first connection, the <code>sa_resiste<\/code> user will be setup as the admin user. Line 2 creates this user with the password <code>derby123<\/code>. Lines 3 and 4 then disconnect from the database and exit <code>ij<\/code>.<\/p>\n<p><strong>RESTART THE NETWORK SERVER NOW<\/strong><\/p>\n<p>After restarting, let\u2019s see if it worked. Connect with <code>sa_resiste<\/code> and no password. Connection will get authentication failure.<\/p>\n<pre class=\"brush:sql\">ij&gt; connect 'jdbc:derby:\/\/localhost:11528\/resiste' user 'sa_resiste';\r\nERROR 08004: Connection authentication failure occurred.  Reason: Userid or password invalid.<\/pre>\n<p>Now connect with <code>sa_resiste<\/code> and password. Connection will succeed.<\/p>\n<pre class=\"brush:sql\">ij&gt; connect 'jdbc:derby:\/\/localhost:11528\/resiste' user 'sa_resiste' password 'derby123';\r\nij&gt;<\/pre>\n<p>Good! The admin user is now created. Next we\u2019ll use the admin user to create a table. This table will be used to validate the permissions of the application-level user we\u2019ll create later.<\/p>\n<h2>Create Test Table<\/h2>\n<p>Now we are going to use the admin user to create a test table. We will do this for a couple reasons.<\/p>\n<ol>\n<li>Verify the admin user has all permissions and is able to execute these SQL commands.<\/li>\n<li>Verify the permissions of the application-level user we\u2019ll create later.<\/li>\n<\/ol>\n<pre class=\"brush:sql\">ij&gt; connect 'jdbc:derby:\/\/localhost:11528\/resiste' user 'sa_resiste' password 'derby123';\r\nij&gt; create schema testing;\r\nij&gt; set schema testing;\r\nij&gt; create table names (full_name varchar(100));\r\nij&gt; insert into names values ('rita red');\r\nij&gt; select * from names;\r\nFULL_NAME\r\n----------------------------------------------------------------------------------------------------\r\nrita red\r\nij&gt; disconnect;<\/pre>\n<p>Next let\u2019s create the application-level user.<\/p>\n<h2>Create the Application User<\/h2>\n<p>Now for the fun stuff. Let\u2019s create an application-level user. This will be a user with permission limited to only the operations an application is able to perform. For example, if your Microservice is only going to GET data, then the application-level user should only have SELECT permissions on the database table. We will test the application-level user\u2019s permission, but first let\u2019s create the user.<\/p>\n<pre class=\"brush:sql\">ij&gt; connect 'jdbc:derby:\/\/localhost:11528\/resiste' user 'sa_resiste' password 'derby123';\r\nij&gt; CALL SYSCS_UTIL.SYSCS_CREATE_USER('oscar', 'orange');\r\nij&gt; disconnect;\r\nij&gt; exit;<\/pre>\n<p><strong>RESTART THE NETWORK SERVER NOW<\/strong><\/p>\n<p>After restarting, let\u2019s see if it worked. Connect with <code>oscar<\/code>. Connection will succeed, but, <code>oscar<\/code> won\u2019t have the permission to read the test table.<\/p>\n<pre class=\"brush:sql\">ij&gt; connect 'jdbc:derby:\/\/localhost:11528\/resiste' user 'oscar' password 'orange';\r\nij&gt; select * from testing.names;\r\nERROR 42502: User 'OSCAR' does not have SELECT permission on column 'FULL_NAME' of table 'TESTING'.'NAMES'.\r\nij&gt; disconnect;<\/pre>\n<p>Even though the SELECT statement failed, failure means a successful test. <code>oscar<\/code> has no permissions so should not be able to select from the test table. Let\u2019s configure <code>oscar<\/code> next.<\/p>\n<h2>Configure the Application User<\/h2>\n<p>Let\u2019s set some permissions for <code>oscar<\/code>. Of course the <code>sa_resiste<\/code> admin user is required to do this.<\/p>\n<pre class=\"brush:sql\">ij&gt; connect 'jdbc:derby:\/\/localhost:11528\/resiste' user 'sa_resiste' password 'derby123';\r\nij&gt; set schema testing;\r\nij&gt; grant select on names to oscar;\r\nij&gt; disconnect;<\/pre>\n<p>This will give <code>oscar<\/code> only 1 permission: to select from TESTING.NAMES table. Let\u2019s see if it worked.<\/p>\n<pre class=\"brush:sql\">ij&gt; connect 'jdbc:derby:\/\/localhost:11528\/resiste' user 'oscar' password 'orange';\r\nij&gt; select * from testing.names;\r\nFULL_NAME\r\n----------------------------------------------------------------------------------------------------\r\nrita red\r\nij&gt; disconnect;<\/pre>\n<p>Congratulations! You now have an application-level user with limited permissions in your Derby database.<\/p>\n<h2>Summary<\/h2>\n<p>I hope you enjoyed learning how to do simple user administration with Derby.<\/p>\n<div class=\"attribution\">\n<table>\n<tbody>\n<tr>\n<td>Published on Java Code Geeks with permission by Michael Remijan, partner at our <a href=\"\/\/www.javacodegeeks.com\/join-us\/jcg\/\" target=\"_blank\" rel=\"noopener\">JCG program<\/a>. See the original article here: <a href=\"http:\/\/mjremijan.blogspot.com\/2018\/05\/apache-derby-database-users-and.html\" target=\"_blank\" rel=\"noopener\">Apache Derby Database Users and Permissions<\/a><\/p>\n<p>Opinions expressed by Java Code Geeks contributors are their own.<\/td>\n<\/tr>\n<\/tbody>\n<\/table>\n<\/div>\n","protected":false},"excerpt":{"rendered":"<p>Abstract Apache Derby is awesome! Especially in a Microservices environment where the data for services (may) shrink and not require a heartier RDBMS. Derby is awesome because it\u2019s so easy to use, especially when it come to users and permissions &#8211; you don\u2019t need any! But, it may be the case you want to create &hellip;<\/p>\n","protected":false},"author":3178,"featured_media":58,"comment_status":"open","ping_status":"closed","sticky":false,"template":"","format":"standard","meta":{"footnotes":""},"categories":[8],"tags":[56,428,960,1753],"class_list":["post-77263","post","type-post","status-publish","format-standard","has-post-thumbnail","hentry","category-enterprise-java","tag-apache-derby","tag-database","tag-microservices","tag-rdbms"],"yoast_head":"<!-- This site is optimized with the Yoast SEO plugin v27.5 - https:\/\/yoast.com\/product\/yoast-seo-wordpress\/ -->\n<title>Apache Derby Database Users and Permissions - Java Code Geeks<\/title>\n<meta name=\"description\" content=\"Abstract Apache Derby is awesome! Especially in a Microservices environment where the data for services (may) shrink and not require a heartier RDBMS.\" \/>\n<meta name=\"robots\" content=\"index, follow, max-snippet:-1, max-image-preview:large, max-video-preview:-1\" \/>\n<link rel=\"canonical\" href=\"https:\/\/www.javacodegeeks.com\/2018\/05\/apache-derby-database-users-and-permissions.html\" \/>\n<meta property=\"og:locale\" content=\"en_US\" \/>\n<meta property=\"og:type\" content=\"article\" \/>\n<meta property=\"og:title\" content=\"Apache Derby Database Users and Permissions - Java Code Geeks\" \/>\n<meta property=\"og:description\" content=\"Abstract Apache Derby is awesome! Especially in a Microservices environment where the data for services (may) shrink and not require a heartier RDBMS.\" \/>\n<meta property=\"og:url\" content=\"https:\/\/www.javacodegeeks.com\/2018\/05\/apache-derby-database-users-and-permissions.html\" \/>\n<meta property=\"og:site_name\" content=\"Java Code Geeks\" \/>\n<meta property=\"article:publisher\" content=\"https:\/\/www.facebook.com\/javacodegeeks\" \/>\n<meta property=\"article:published_time\" content=\"2018-05-25T13:00:43+00:00\" \/>\n<meta property=\"og:image\" content=\"https:\/\/www.javacodegeeks.com\/wp-content\/uploads\/2012\/10\/apache-derby-logo.jpg\" \/>\n\t<meta property=\"og:image:width\" content=\"150\" \/>\n\t<meta property=\"og:image:height\" content=\"150\" \/>\n\t<meta property=\"og:image:type\" content=\"image\/jpeg\" \/>\n<meta name=\"author\" content=\"Michael Remijan\" \/>\n<meta name=\"twitter:card\" content=\"summary_large_image\" \/>\n<meta name=\"twitter:creator\" content=\"@javacodegeeks\" \/>\n<meta name=\"twitter:site\" content=\"@javacodegeeks\" \/>\n<meta name=\"twitter:label1\" content=\"Written by\" \/>\n\t<meta name=\"twitter:data1\" content=\"Michael Remijan\" \/>\n\t<meta name=\"twitter:label2\" content=\"Est. reading time\" \/>\n\t<meta name=\"twitter:data2\" content=\"7 minutes\" \/>\n<script type=\"application\/ld+json\" class=\"yoast-schema-graph\">{\"@context\":\"https:\\\/\\\/schema.org\",\"@graph\":[{\"@type\":\"Article\",\"@id\":\"https:\\\/\\\/www.javacodegeeks.com\\\/2018\\\/05\\\/apache-derby-database-users-and-permissions.html#article\",\"isPartOf\":{\"@id\":\"https:\\\/\\\/www.javacodegeeks.com\\\/2018\\\/05\\\/apache-derby-database-users-and-permissions.html\"},\"author\":{\"name\":\"Michael Remijan\",\"@id\":\"https:\\\/\\\/www.javacodegeeks.com\\\/#\\\/schema\\\/person\\\/29887059c051a7f738ae776d5aba9e27\"},\"headline\":\"Apache Derby Database Users and Permissions\",\"datePublished\":\"2018-05-25T13:00:43+00:00\",\"mainEntityOfPage\":{\"@id\":\"https:\\\/\\\/www.javacodegeeks.com\\\/2018\\\/05\\\/apache-derby-database-users-and-permissions.html\"},\"wordCount\":1004,\"commentCount\":0,\"publisher\":{\"@id\":\"https:\\\/\\\/www.javacodegeeks.com\\\/#organization\"},\"image\":{\"@id\":\"https:\\\/\\\/www.javacodegeeks.com\\\/2018\\\/05\\\/apache-derby-database-users-and-permissions.html#primaryimage\"},\"thumbnailUrl\":\"https:\\\/\\\/www.javacodegeeks.com\\\/wp-content\\\/uploads\\\/2012\\\/10\\\/apache-derby-logo.jpg\",\"keywords\":[\"Apache Derby\",\"Database\",\"Microservices\",\"RDBMS\"],\"articleSection\":[\"Enterprise Java\"],\"inLanguage\":\"en-US\",\"potentialAction\":[{\"@type\":\"CommentAction\",\"name\":\"Comment\",\"target\":[\"https:\\\/\\\/www.javacodegeeks.com\\\/2018\\\/05\\\/apache-derby-database-users-and-permissions.html#respond\"]}]},{\"@type\":\"WebPage\",\"@id\":\"https:\\\/\\\/www.javacodegeeks.com\\\/2018\\\/05\\\/apache-derby-database-users-and-permissions.html\",\"url\":\"https:\\\/\\\/www.javacodegeeks.com\\\/2018\\\/05\\\/apache-derby-database-users-and-permissions.html\",\"name\":\"Apache Derby Database Users and Permissions - Java Code Geeks\",\"isPartOf\":{\"@id\":\"https:\\\/\\\/www.javacodegeeks.com\\\/#website\"},\"primaryImageOfPage\":{\"@id\":\"https:\\\/\\\/www.javacodegeeks.com\\\/2018\\\/05\\\/apache-derby-database-users-and-permissions.html#primaryimage\"},\"image\":{\"@id\":\"https:\\\/\\\/www.javacodegeeks.com\\\/2018\\\/05\\\/apache-derby-database-users-and-permissions.html#primaryimage\"},\"thumbnailUrl\":\"https:\\\/\\\/www.javacodegeeks.com\\\/wp-content\\\/uploads\\\/2012\\\/10\\\/apache-derby-logo.jpg\",\"datePublished\":\"2018-05-25T13:00:43+00:00\",\"description\":\"Abstract Apache Derby is awesome! Especially in a Microservices environment where the data for services (may) shrink and not require a heartier RDBMS.\",\"breadcrumb\":{\"@id\":\"https:\\\/\\\/www.javacodegeeks.com\\\/2018\\\/05\\\/apache-derby-database-users-and-permissions.html#breadcrumb\"},\"inLanguage\":\"en-US\",\"potentialAction\":[{\"@type\":\"ReadAction\",\"target\":[\"https:\\\/\\\/www.javacodegeeks.com\\\/2018\\\/05\\\/apache-derby-database-users-and-permissions.html\"]}]},{\"@type\":\"ImageObject\",\"inLanguage\":\"en-US\",\"@id\":\"https:\\\/\\\/www.javacodegeeks.com\\\/2018\\\/05\\\/apache-derby-database-users-and-permissions.html#primaryimage\",\"url\":\"https:\\\/\\\/www.javacodegeeks.com\\\/wp-content\\\/uploads\\\/2012\\\/10\\\/apache-derby-logo.jpg\",\"contentUrl\":\"https:\\\/\\\/www.javacodegeeks.com\\\/wp-content\\\/uploads\\\/2012\\\/10\\\/apache-derby-logo.jpg\",\"width\":150,\"height\":150},{\"@type\":\"BreadcrumbList\",\"@id\":\"https:\\\/\\\/www.javacodegeeks.com\\\/2018\\\/05\\\/apache-derby-database-users-and-permissions.html#breadcrumb\",\"itemListElement\":[{\"@type\":\"ListItem\",\"position\":1,\"name\":\"Home\",\"item\":\"https:\\\/\\\/www.javacodegeeks.com\\\/\"},{\"@type\":\"ListItem\",\"position\":2,\"name\":\"Java\",\"item\":\"https:\\\/\\\/www.javacodegeeks.com\\\/category\\\/java\"},{\"@type\":\"ListItem\",\"position\":3,\"name\":\"Enterprise Java\",\"item\":\"https:\\\/\\\/www.javacodegeeks.com\\\/category\\\/java\\\/enterprise-java\"},{\"@type\":\"ListItem\",\"position\":4,\"name\":\"Apache Derby Database Users and Permissions\"}]},{\"@type\":\"WebSite\",\"@id\":\"https:\\\/\\\/www.javacodegeeks.com\\\/#website\",\"url\":\"https:\\\/\\\/www.javacodegeeks.com\\\/\",\"name\":\"Java Code Geeks\",\"description\":\"Java Developers Resource Center\",\"publisher\":{\"@id\":\"https:\\\/\\\/www.javacodegeeks.com\\\/#organization\"},\"alternateName\":\"JCG\",\"potentialAction\":[{\"@type\":\"SearchAction\",\"target\":{\"@type\":\"EntryPoint\",\"urlTemplate\":\"https:\\\/\\\/www.javacodegeeks.com\\\/?s={search_term_string}\"},\"query-input\":{\"@type\":\"PropertyValueSpecification\",\"valueRequired\":true,\"valueName\":\"search_term_string\"}}],\"inLanguage\":\"en-US\"},{\"@type\":\"Organization\",\"@id\":\"https:\\\/\\\/www.javacodegeeks.com\\\/#organization\",\"name\":\"Exelixis Media P.C.\",\"url\":\"https:\\\/\\\/www.javacodegeeks.com\\\/\",\"logo\":{\"@type\":\"ImageObject\",\"inLanguage\":\"en-US\",\"@id\":\"https:\\\/\\\/www.javacodegeeks.com\\\/#\\\/schema\\\/logo\\\/image\\\/\",\"url\":\"https:\\\/\\\/www.javacodegeeks.com\\\/wp-content\\\/uploads\\\/2022\\\/06\\\/exelixis-logo.png\",\"contentUrl\":\"https:\\\/\\\/www.javacodegeeks.com\\\/wp-content\\\/uploads\\\/2022\\\/06\\\/exelixis-logo.png\",\"width\":864,\"height\":246,\"caption\":\"Exelixis Media P.C.\"},\"image\":{\"@id\":\"https:\\\/\\\/www.javacodegeeks.com\\\/#\\\/schema\\\/logo\\\/image\\\/\"},\"sameAs\":[\"https:\\\/\\\/www.facebook.com\\\/javacodegeeks\",\"https:\\\/\\\/x.com\\\/javacodegeeks\"]},{\"@type\":\"Person\",\"@id\":\"https:\\\/\\\/www.javacodegeeks.com\\\/#\\\/schema\\\/person\\\/29887059c051a7f738ae776d5aba9e27\",\"name\":\"Michael Remijan\",\"image\":{\"@type\":\"ImageObject\",\"inLanguage\":\"en-US\",\"@id\":\"https:\\\/\\\/secure.gravatar.com\\\/avatar\\\/660a324990ecdd382c28c15ae952984b3157b2bc7ad8524692f52f516b155954?s=96&d=mm&r=g\",\"url\":\"https:\\\/\\\/secure.gravatar.com\\\/avatar\\\/660a324990ecdd382c28c15ae952984b3157b2bc7ad8524692f52f516b155954?s=96&d=mm&r=g\",\"contentUrl\":\"https:\\\/\\\/secure.gravatar.com\\\/avatar\\\/660a324990ecdd382c28c15ae952984b3157b2bc7ad8524692f52f516b155954?s=96&d=mm&r=g\",\"caption\":\"Michael Remijan\"},\"description\":\"Michael Remijan is a System Architect at the Federal Reserve Bank St. Louis. He is co-author of 'EJB 3 In Action Second', an active blogger in the Java EE community, a Java EE Guardian, and JavaOne presenter. He has developed enterprise systems for B2C and B2B commerce, manufacturing, astronomy, agriculture, telecommunications, national defense, healthcare, and financial areas.\",\"sameAs\":[\"http:\\\/\\\/mjremijan.blogspot.gr\\\/\",\"https:\\\/\\\/www.linkedin.com\\\/in\\\/mjremijan\\\/\"],\"url\":\"https:\\\/\\\/www.javacodegeeks.com\\\/author\\\/michael-remijan\"}]}<\/script>\n<!-- \/ Yoast SEO plugin. -->","yoast_head_json":{"title":"Apache Derby Database Users and Permissions - Java Code Geeks","description":"Abstract Apache Derby is awesome! Especially in a Microservices environment where the data for services (may) shrink and not require a heartier RDBMS.","robots":{"index":"index","follow":"follow","max-snippet":"max-snippet:-1","max-image-preview":"max-image-preview:large","max-video-preview":"max-video-preview:-1"},"canonical":"https:\/\/www.javacodegeeks.com\/2018\/05\/apache-derby-database-users-and-permissions.html","og_locale":"en_US","og_type":"article","og_title":"Apache Derby Database Users and Permissions - Java Code Geeks","og_description":"Abstract Apache Derby is awesome! Especially in a Microservices environment where the data for services (may) shrink and not require a heartier RDBMS.","og_url":"https:\/\/www.javacodegeeks.com\/2018\/05\/apache-derby-database-users-and-permissions.html","og_site_name":"Java Code Geeks","article_publisher":"https:\/\/www.facebook.com\/javacodegeeks","article_published_time":"2018-05-25T13:00:43+00:00","og_image":[{"width":150,"height":150,"url":"https:\/\/www.javacodegeeks.com\/wp-content\/uploads\/2012\/10\/apache-derby-logo.jpg","type":"image\/jpeg"}],"author":"Michael Remijan","twitter_card":"summary_large_image","twitter_creator":"@javacodegeeks","twitter_site":"@javacodegeeks","twitter_misc":{"Written by":"Michael Remijan","Est. reading time":"7 minutes"},"schema":{"@context":"https:\/\/schema.org","@graph":[{"@type":"Article","@id":"https:\/\/www.javacodegeeks.com\/2018\/05\/apache-derby-database-users-and-permissions.html#article","isPartOf":{"@id":"https:\/\/www.javacodegeeks.com\/2018\/05\/apache-derby-database-users-and-permissions.html"},"author":{"name":"Michael Remijan","@id":"https:\/\/www.javacodegeeks.com\/#\/schema\/person\/29887059c051a7f738ae776d5aba9e27"},"headline":"Apache Derby Database Users and Permissions","datePublished":"2018-05-25T13:00:43+00:00","mainEntityOfPage":{"@id":"https:\/\/www.javacodegeeks.com\/2018\/05\/apache-derby-database-users-and-permissions.html"},"wordCount":1004,"commentCount":0,"publisher":{"@id":"https:\/\/www.javacodegeeks.com\/#organization"},"image":{"@id":"https:\/\/www.javacodegeeks.com\/2018\/05\/apache-derby-database-users-and-permissions.html#primaryimage"},"thumbnailUrl":"https:\/\/www.javacodegeeks.com\/wp-content\/uploads\/2012\/10\/apache-derby-logo.jpg","keywords":["Apache Derby","Database","Microservices","RDBMS"],"articleSection":["Enterprise Java"],"inLanguage":"en-US","potentialAction":[{"@type":"CommentAction","name":"Comment","target":["https:\/\/www.javacodegeeks.com\/2018\/05\/apache-derby-database-users-and-permissions.html#respond"]}]},{"@type":"WebPage","@id":"https:\/\/www.javacodegeeks.com\/2018\/05\/apache-derby-database-users-and-permissions.html","url":"https:\/\/www.javacodegeeks.com\/2018\/05\/apache-derby-database-users-and-permissions.html","name":"Apache Derby Database Users and Permissions - Java Code Geeks","isPartOf":{"@id":"https:\/\/www.javacodegeeks.com\/#website"},"primaryImageOfPage":{"@id":"https:\/\/www.javacodegeeks.com\/2018\/05\/apache-derby-database-users-and-permissions.html#primaryimage"},"image":{"@id":"https:\/\/www.javacodegeeks.com\/2018\/05\/apache-derby-database-users-and-permissions.html#primaryimage"},"thumbnailUrl":"https:\/\/www.javacodegeeks.com\/wp-content\/uploads\/2012\/10\/apache-derby-logo.jpg","datePublished":"2018-05-25T13:00:43+00:00","description":"Abstract Apache Derby is awesome! Especially in a Microservices environment where the data for services (may) shrink and not require a heartier RDBMS.","breadcrumb":{"@id":"https:\/\/www.javacodegeeks.com\/2018\/05\/apache-derby-database-users-and-permissions.html#breadcrumb"},"inLanguage":"en-US","potentialAction":[{"@type":"ReadAction","target":["https:\/\/www.javacodegeeks.com\/2018\/05\/apache-derby-database-users-and-permissions.html"]}]},{"@type":"ImageObject","inLanguage":"en-US","@id":"https:\/\/www.javacodegeeks.com\/2018\/05\/apache-derby-database-users-and-permissions.html#primaryimage","url":"https:\/\/www.javacodegeeks.com\/wp-content\/uploads\/2012\/10\/apache-derby-logo.jpg","contentUrl":"https:\/\/www.javacodegeeks.com\/wp-content\/uploads\/2012\/10\/apache-derby-logo.jpg","width":150,"height":150},{"@type":"BreadcrumbList","@id":"https:\/\/www.javacodegeeks.com\/2018\/05\/apache-derby-database-users-and-permissions.html#breadcrumb","itemListElement":[{"@type":"ListItem","position":1,"name":"Home","item":"https:\/\/www.javacodegeeks.com\/"},{"@type":"ListItem","position":2,"name":"Java","item":"https:\/\/www.javacodegeeks.com\/category\/java"},{"@type":"ListItem","position":3,"name":"Enterprise Java","item":"https:\/\/www.javacodegeeks.com\/category\/java\/enterprise-java"},{"@type":"ListItem","position":4,"name":"Apache Derby Database Users and Permissions"}]},{"@type":"WebSite","@id":"https:\/\/www.javacodegeeks.com\/#website","url":"https:\/\/www.javacodegeeks.com\/","name":"Java Code Geeks","description":"Java Developers Resource Center","publisher":{"@id":"https:\/\/www.javacodegeeks.com\/#organization"},"alternateName":"JCG","potentialAction":[{"@type":"SearchAction","target":{"@type":"EntryPoint","urlTemplate":"https:\/\/www.javacodegeeks.com\/?s={search_term_string}"},"query-input":{"@type":"PropertyValueSpecification","valueRequired":true,"valueName":"search_term_string"}}],"inLanguage":"en-US"},{"@type":"Organization","@id":"https:\/\/www.javacodegeeks.com\/#organization","name":"Exelixis Media P.C.","url":"https:\/\/www.javacodegeeks.com\/","logo":{"@type":"ImageObject","inLanguage":"en-US","@id":"https:\/\/www.javacodegeeks.com\/#\/schema\/logo\/image\/","url":"https:\/\/www.javacodegeeks.com\/wp-content\/uploads\/2022\/06\/exelixis-logo.png","contentUrl":"https:\/\/www.javacodegeeks.com\/wp-content\/uploads\/2022\/06\/exelixis-logo.png","width":864,"height":246,"caption":"Exelixis Media P.C."},"image":{"@id":"https:\/\/www.javacodegeeks.com\/#\/schema\/logo\/image\/"},"sameAs":["https:\/\/www.facebook.com\/javacodegeeks","https:\/\/x.com\/javacodegeeks"]},{"@type":"Person","@id":"https:\/\/www.javacodegeeks.com\/#\/schema\/person\/29887059c051a7f738ae776d5aba9e27","name":"Michael Remijan","image":{"@type":"ImageObject","inLanguage":"en-US","@id":"https:\/\/secure.gravatar.com\/avatar\/660a324990ecdd382c28c15ae952984b3157b2bc7ad8524692f52f516b155954?s=96&d=mm&r=g","url":"https:\/\/secure.gravatar.com\/avatar\/660a324990ecdd382c28c15ae952984b3157b2bc7ad8524692f52f516b155954?s=96&d=mm&r=g","contentUrl":"https:\/\/secure.gravatar.com\/avatar\/660a324990ecdd382c28c15ae952984b3157b2bc7ad8524692f52f516b155954?s=96&d=mm&r=g","caption":"Michael Remijan"},"description":"Michael Remijan is a System Architect at the Federal Reserve Bank St. Louis. He is co-author of 'EJB 3 In Action Second', an active blogger in the Java EE community, a Java EE Guardian, and JavaOne presenter. He has developed enterprise systems for B2C and B2B commerce, manufacturing, astronomy, agriculture, telecommunications, national defense, healthcare, and financial areas.","sameAs":["http:\/\/mjremijan.blogspot.gr\/","https:\/\/www.linkedin.com\/in\/mjremijan\/"],"url":"https:\/\/www.javacodegeeks.com\/author\/michael-remijan"}]}},"_links":{"self":[{"href":"https:\/\/www.javacodegeeks.com\/wp-json\/wp\/v2\/posts\/77263","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/www.javacodegeeks.com\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/www.javacodegeeks.com\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/www.javacodegeeks.com\/wp-json\/wp\/v2\/users\/3178"}],"replies":[{"embeddable":true,"href":"https:\/\/www.javacodegeeks.com\/wp-json\/wp\/v2\/comments?post=77263"}],"version-history":[{"count":0,"href":"https:\/\/www.javacodegeeks.com\/wp-json\/wp\/v2\/posts\/77263\/revisions"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/www.javacodegeeks.com\/wp-json\/wp\/v2\/media\/58"}],"wp:attachment":[{"href":"https:\/\/www.javacodegeeks.com\/wp-json\/wp\/v2\/media?parent=77263"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/www.javacodegeeks.com\/wp-json\/wp\/v2\/categories?post=77263"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/www.javacodegeeks.com\/wp-json\/wp\/v2\/tags?post=77263"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}